Ranking (as of 2013-06-09): 1037 out of 1867
Language: C++
/* UVa 10115 - Automatic Editing To build using Visual Studio 2008: cl -EHsc -O2 automatic_editing.cpp */ #include <cstdio> #include <cstring> using namespace std; const int nr_rules_max = 10; const int nr_rule_chrs_max = 80, nr_text_chrs_max = 255; struct find_replace_rule { char find_[nr_rule_chrs_max + 1]; char replace_[nr_rule_chrs_max + 1]; } rules[nr_rules_max]; void apply_rule(const find_replace_rule* rule, char* text) { const char *f = rule->find_, *r = rule->replace_; int fl = strlen(rule->find_), rl = strlen(rule->replace_); for ( ; *text; ) if (!strncmp(text, f, fl)) { memmove(text + rl, text + fl, strlen(text + fl) + 1); memcpy(text, r, rl); } else text++; } int main() { while (true) { char text[nr_text_chrs_max + 1]; gets(text); int nr_rules; sscanf(text, "%d", &nr_rules); if (!nr_rules) break; for (int i = 0; i < nr_rules; i++) { gets(rules[i].find_); gets(rules[i].replace_); } gets(text); for (int i = 0; i < nr_rules; i++) apply_rule(rules + i, text); printf("%s\n", text); } return 0; }
No comments:
Post a Comment