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,&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",&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",&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;
  }
#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,&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",&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",&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;
  }