Ranking (as of 2014-01-12): 226 out of 585
Language: C++
/* UVa 741 - Burrows Wheeler Decoder To build using Visual Studio 2012: cl -EHsc -O2 UVa_741_Burrows_Wheeler_Decoder.cpp */ #include <algorithm> #include <cstdio> #include <cstring> using namespace std; int main() { const int nr_chars_max = 300; char d[nr_chars_max + 1], s[nr_chars_max + 1], t[nr_chars_max + 1]; bool printed = false; while (true) { int di; scanf("%s%d", d, &di); if (!strcmp(d, "END") && !di) break; if (printed) putchar('\n'); di--; int length = strlen(d); strcpy(s, d); sort(s, s + length); t[0] = s[di]; #ifdef DEBUG printf("%c ", s[di]); #endif int pi; for (pi = 0, di--; di >= 0 && s[di] == t[0]; di--) pi++; for (int ti = 1; ti < length; ti++) { for (di = 0; di < length; di++) if (d[di] == t[ti - 1]) { if (!pi--) break; } t[ti] = s[di]; #ifdef DEBUG printf("%c ", s[di]); #endif for (pi = 0, di--; di >= 0 && s[di] == t[ti]; di--) pi++; } t[length] = '\0'; printed = true; printf("%s\n", t); } }
No comments:
Post a Comment