#include #include char word[20]; char c; int a[30]; int compMillion(int i); int compThousand(int i); int compHundred(int i); char* get_word() { scanf("%s", word); return word; } int is_end() { c = getc(stdin); if(c == '\n') return 1; else if(c == EOF) return 2; else { ungetc(c, stdin); return 0; } } int translate(char *number) { if(strcmp(number, "negative") == 0) { return -1; } else if(strcmp(number, "zero") == 0) { return 0; } else if(strcmp(number, "one") == 0) { return 1; } else if(strcmp(number, "two") == 0) { return 2; } else if(strcmp(number, "three") == 0) { return 3; } else if(strcmp(number, "four") == 0) { return 4; } else if(strcmp(number, "five") == 0) { return 5; } else if(strcmp(number, "six") == 0) { return 6; } else if(strcmp(number, "seven") == 0) { return 7; } else if(strcmp(number, "eight") == 0) { return 8; } else if(strcmp(number, "nine") == 0) { return 9; } else if(strcmp(number, "ten") == 0) { return 10; } else if(strcmp(number, "eleven") == 0) { return 11; } else if(strcmp(number, "twelve") == 0) { return 12; } else if(strcmp(number, "thirteen") == 0) { return 13; } else if(strcmp(number, "fourteen") == 0) { return 14; } else if(strcmp(number, "fifteen") == 0) { return 15; } else if(strcmp(number, "sixteen") == 0) { return 16; } else if(strcmp(number, "seventeen") == 0) { return 17; } else if(strcmp(number, "eighteen") == 0) { return 18; } else if(strcmp(number, "nineteen") == 0) { return 19; } else if(strcmp(number, "twenty") == 0) { return 20; } else if(strcmp(number, "thirty") == 0) { return 30; } else if(strcmp(number, "fourty") == 0) { return 40; } else if(strcmp(number, "fifty") == 0) { return 50; } else if(strcmp(number, "sixty") == 0) { return 60; } else if(strcmp(number, "seventy") == 0) { return 70; } else if(strcmp(number, "eighty") == 0) { return 80; } else if(strcmp(number, "ninety") == 0) { return 90; } else if(strcmp(number, "hundred") == 0) { return 100; } else if(strcmp(number, "thousand") == 0) { return 1000; } else if(strcmp(number, "million") == 0) { return 1000000; } else return -5; } int compMillion(int k) { int el = k - 1, en = 0; int em = 0, ef = 0; while(a[el] != -2 && el != -1) { if (a[el] == 1000) { em = compThousand(el); } el--; } el = k - 1; while(a[el] != -2 && el != -1) { if (a[el] == 100) { ef = compHundred(el); } el--; } el = k - 1; while(a[el] != -2 && el != -1) { en += a[el]; a[el] = -2; el--; } a[k] = -2; return (em + ef + en) * 1000000; } int compThousand(int k) { int el = k - 1, en = 0; int em = 0; while(a[el] != -2 && el != -1) { if (a[el] == 100) { em = compHundred(el); } el--; } el = k - 1; while(a[el] != -2 && el != -1) { en += a[el]; a[el] = -2; el--; } a[k] = -2; return (em + en) * 1000; } int compHundred(int k) { int el = 100 * a[k - 1]; a[k - 1] = -2; a[k] = -2; return el; } int main(){ int sign; int num; int j, l; while(is_end() != 2) { j = 0; sign = 1; while(!is_end()) { a[j++] = translate(get_word()); } if(a[0] == -1) { sign = -1; a[0] = -2; } num = 0; for(l = 0; l < j; l++) if(a[l] == 1000000) num += compMillion(l); for(l = 0; l < j; l++) if(a[l] == 1000) num += compThousand(l); for(l = 0; l < j; l++) if(a[l] == 100) num += compHundred(l); j--; while(a[j] != -2 && j != -1) { num += a[j]; j--; } printf("%d\n", sign*num); if(is_end() == 1) return 0; } return 0; }