2013年8月22日

UVa 10785 - The Mad Numerologist

#include <cstdio>
#include <string>
#include <algorithm>
using namespace std;

const int c[21] = {
  'J', 'S',
  'B', 'K', 'T',
  'C', 'L',
  'D', 'M', 'V',
  'N', 'W',
  'F', 'X',
  'G', 'P', 'Y',
  'H', 'Q', 'Z',
  'R',
};

const int v[5] = {'A', 'U', 'E', 'O', 'I'};

int main() {
  int T, C = 1;
  scanf("%d", &T);
  while (T--) {
    int l;
    scanf("%d", &l);
    int vi = 0, ci = 0, cnt[128] = {};
    string vs, cs;
    printf("Case %d: ", C++);
    for (int i = 1; i <= l; i++) {
      if (i & 1) {
        vs += v[vi];
        cnt[v[vi]]++;
        if (cnt[v[vi]] == 21) {
          vi++;
        }
      } else {
        cs += c[ci];
        cnt[c[ci]]++;
        if (cnt[c[ci]] == 5) {
          ci++;
        }
      }
    }
    sort(vs.begin(), vs.end());
    sort(cs.begin(), cs.end());
    for (int i = 1; i <= l; i++) {
      if (i & 1) {
        putchar(vs[i / 2]);
      } else {
        putchar(cs[i / 2 - 1]);
      }
    }
    puts("");
  }
  return 0;
}

沒有留言:

張貼留言