#include #include const struct { char *cislo; int number; } cisla[]={ {"zero",0}, {"one",1}, {"two",2}, {"three",3}, {"four",4}, {"five",5}, {"six",6}, {"seven",7}, {"eight",8}, {"nine",9}, {"ten",10}, {"eleven",11}, {"twelve",12}, {"thirteen",13}, {"fourteen",14}, {"fifteen",15}, {"sixteen",16}, {"seventeen",17}, {"eighteen",18}, {"nineteen",19}, {"twenty",20}, {"thirty",30}, {"forty",40}, {"fifty",50 }, {"sixty ",60 }, {"seventy",70}, {"eighty",80 }, {"ninety",90 }, {"hundred",100}, {"thousand",1000 }, {"million",1000000}, {"*",0}}; int main(void) { char *s; int des,i,ret,neg=0; char line[100]; while (fgets(line,sizeof(line),stdin)!=NULL) { des=0; ret=0; neg=0; line[strlen(line)-1]='\0'; s=strtok(line," "); if (!strcmp(line,"negative")) neg=1; while (s!=NULL) { if (s[0]=='\n') return 0; i=0; while (cisla[i].cislo[0]!='*') { if (!strcmp(cisla[i].cislo,s)) { if (cisla[i].number > des) { if (des) { if ((cisla[i].number*des) >ret) ret=(ret+des)*cisla[i].number; else ret=ret+(des*cisla[i].number); des=0; } else des=cisla[i].number; } else { des+=cisla[i].number; } break; } i++; } s=strtok(NULL," "); } if (des) ret+=des; if (neg) ret*=-1; printf("%d\n",ret); } return 0; }