Algoogle

Algorithm for Programming Contest

AOJ 2575 D’s Ambition

Category: AOJ Tag: implementation

D’s Ambition

問題概要


AIDUNYANのアナグラムになっている部分をAIZUNYANに変換しろ.
ただしそのような部分が複数ある場合でも互いに範囲が重なることはない.

解法


8文字ずつ取ってきてアナグラムになっているかみて, なっていたらAIZUNYANに置換すれば良い.

コード


(2575.cpp) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
using namespace std;
#define repi(i,a,b) for(int i = (int)(a); i < (int)(b); i++)
#define rep(i,a) repi(i,0,a)
const string ad = "AADINNUY", az = "AIZUNYAN";
string s, t;

int main(){
    cin >> s;
    rep(i,s.size()-7){
        t = s.substr(i,8);
        sort(begin(t),end(t));
        if(t == ad){
            s = s.substr(0,i)+az+s.substr(i+8);
            i += 7;
        }
    }
    cout << s << endl;
    return 0;
}

Comments