AOJ 2575 D's Ambition

問題

D's Ambition

解法

8文字ずつ読んで"AIDUNYAN"のアナグラムだったら"AIZUNYAN"に置き換える。 実装するだけ、バグを埋めないようにすればいい。アナグラムの判定はアルファベットごとに数えたり、"AIDUNYAN"のアナグラムを先に生成するとか

心臓に悪いコード

string D;
char ana[] = {"IDUYNA"};

int main(){
  cin >> D;
  rep(i, (int)D.size()-7){
    map<char, int>m;
    rep(p, 8){
      m[D[p+i]]++;
    }
    int f = 1;
    rep(i, 4) if(m[ana[i]] != 1) f = 0;
    REP(i, 4, 6) if(m[ana[i]] != 2) f = 0;
    if(f){
      D.erase(i, 8);
      D.insert(i, "AIZUNYAN");
      i += 7;
    }
  }
  cout << D << endl;
  return 0;
}