Run Time: 0.020
Ranking (as of 2016-04-10): 2 out of 141
Language: C++
/* UVa 373 - Romulan Spelling To build using Visual Studio 2012: cl -EHsc -O2 UVa_373_Romulan_Spelling.cpp */ /* 'g' should be before 'p', except "epg" and "pguk" */ #include <algorithm> #include <cstdio> #include <cstring> #include <cctype> using namespace std; const int nr_chars_max = 70; int main() { char s[nr_chars_max + 1]; while (gets(s)) { for (int i = 0, length = strlen(s); i < length; i++) { if (tolower(s[i]) == 'g') { if (i && tolower(s[i - 1]) == 'p') { if (i < length - 1 && tolower(s[i + 1]) == 'u' && tolower(s[i + 2]) == 'k') ; else { int j = i; do { if (j > 1 && tolower(s[j - 2]) == 'e') break; swap(s[j - 1], s[j]); j--; } while (j && tolower(s[j - 1]) == 'p'); } } } if (tolower(s[i]) == 'g') { if (i < length && tolower(s[i + 1]) == 'p') { if (i && tolower(s[i - 1]) == 'e') swap(s[i], s[i + 1]); else if (i < length - 2 && tolower(s[i + 2]) == 'u' && tolower(s[i + 3]) == 'k') { swap(s[i], s[i + 1]); if (i > 1 && tolower(s[i - 1]) == 'g' && tolower(s[i - 2]) == 'e') swap(s[i - 1], s[i]); } } } } puts(s); } return 0; }
No comments:
Post a Comment