← Back to topics
Topic

z-procesor

m
mbalunovic
Zašto ovo pada na vremenu na svim test primjerima  >:( ??????????

#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;

char a[100][15];
int b[1000000]={0};
string ch[100000][100];
int niz[1000000][100]={0};
int n=0;

int dodaj(){
    int car=0;
    char r1[15];
    int num=0,o=0;
    scanf ("%s %d",r1,&amp;num);
    for (int j=0;j<strlen(r1);j++){
            if (j%2==0){car+=(int(r1[j]));}}
    for (int j=0;j<b[car];j++){if (ch[car][j]==r1){o=j;break;}}
    niz[car][o]=(niz[car][o]+num)%10000;
    }
   
int addaj(){
    int car1=0,car2=0,car3=0;
    int o1=0,o2=0,o3=0;
    char r1[15],r2[15],r3[15];
    scanf ("%s %s %s",r1,r2,r3);
   
    for (int j=0;j<strlen(r1);j++){if (j%2==0){car1+=(int(r1[j]));}}
    for (int j=0;j<strlen(r2);j++){if (j%2==0){car2+=(int(r2[j]));}}
    for (int j=0;j<strlen(r3);j++){if (j%2==0){car3+=(int(r3[j]));}}
   
     for (int j=0;j<b[car1];j++){
         if (ch[car1][j]==r1){o1=j;
            for (int k=0;k<b[car2];k++){
                if (ch[car2][k]==r2){o2=k;
                   for (int t=0;t<b[car3];t++){
                       if (ch[car3][t]==r3){niz[car3][t]=((niz[car2][o2]+niz[car1][o1]))%10000; }
                       }
                       }
                }
         }
     
     }
     }
   
    int mnozi(){
    int car1=0,car2=0,car3=0;
    int o1=0,o2=0,o3=0;
    char r1[15],r2[15],r3[15];
    scanf ("%s %s %s",r1,r2,r3);
   
    for (int j=0;j<strlen(r1);j++){if (j%2==0){car1+=(int(r1[j]));}}
    for (int j=0;j<strlen(r2);j++){if (j%2==0){car2+=(int(r2[j]));}}
    for (int j=0;j<strlen(r3);j++){if (j%2==0){car3+=(int(r3[j]));}}
   
     for (int j=0;j<b[car1];j++){
         if (ch[car1][j]==r1){o1=j;
            for (int k=0;k<b[car2];k++){
                if (ch[car2][k]==r2){o2=k;
                   for (int t=0;t<b[car3];t++){
                       if (ch[car3][t]==r1){niz[car3][t]=((niz[car2][o2]*niz[car1][o1]))%10000; }
                       }
                       }
                }
         }
     
     }
   
    }
   
int ispis(){
    char o[17];
    int car=0,on=0;
    scanf ("%s",o);
    for (int j=0;j<strlen(o);j++){if (j%2==0){car+=(int(o[j]));}}
    for (int j=0;j<b[car];j++){if (ch[car][j]==o){on=j;break;}}
    printf ("%d \n",niz[car][on]);
    }

int main() {
    char d[5];
    int car=0;
    scanf ("%d",&amp;n);
    for (int i=0;i<n;i++){
        car=0;
        scanf ("%s",a[i]);
        for (int j=0;j<strlen(a[i]);j++){
            if (j%2==0){car+=(int(a[i][j]));}
        }
        ch[car][b[car]]=a[i];
        b[car]++;   
        }
    scanf ("%d",&amp;n);
    for (int i=0;i<n;i++){
        scanf ("%s",d);
        if (d[0]=='I') dodaj();
        if (d[0]=='O') ispis();
        if (d[0]=='A') addaj();
        if (d[0]=='M') mnozi();
        }
       
        return 0;
    }