結果

問題 No.380 悪の台本
ユーザー ricky
提出日時 2016-06-17 23:45:36
言語 C++11
(gcc 4.8.5)
結果
AC  
実行時間 173 ms
コード長 2,887 Byte
コンパイル時間 1,319 ms
使用メモリ 7,232 KB
最終ジャッジ日時 2019-10-08 13:29:46

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
challenge01.txt AC 3 ms
1,540 KB
hand AC 3 ms
1,552 KB
sample1 AC 3 ms
1,552 KB
sample2 AC 3 ms
1,548 KB
test1 AC 11 ms
1,560 KB
test2 AC 29 ms
1,548 KB
test3 AC 26 ms
1,548 KB
test4 AC 173 ms
1,544 KB
test5 AC 19 ms
7,232 KB
test6 AC 19 ms
1,556 KB
テストケース一括ダウンロード

ソースコード

diff #
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

typedef int _loop_int;
#define REP(i,n) for(_loop_int i=0;i<(_loop_int)(n);++i)
#define FOR(i,a,b) for(_loop_int i=(_loop_int)(a);i<(_loop_int)(b);++i)
#define FORR(i,a,b) for(_loop_int i=(_loop_int)(b)-1;i>=(_loop_int)(a);--i)

#define DEBUG(x) cout<<#x<<": "<<x<<endl
#define DEBUG_VEC(v) cout<<#v<<":";REP(i,v.size())cout<<" "<<v[i];cout<<endl
#define ALL(a) (a).begin(),(a).end()

#define CHMIN(a,b) a=min((a),(b))
#define CHMAX(a,b) a=max((a),(b))

// mod
const ll MOD = 1000000007ll;
#define FIX(a) ((a)%MOD+MOD)%MOD

// floating
typedef double Real;
const Real EPS = 1e-11;
#define EQ0(x) (abs(x)<EPS)
#define EQ(a,b) (abs(a-b)<EPS)
typedef complex<Real> P;

char s[125252];
char OK[] = "CORRECT (maybe)";
char NG[] = "WRONG!";
int main(){
  map<string,string> mp;
  mp["digi"] = "nyo";
  mp["petit"] = "nyu";
  mp["gema"] = "gema";
  mp["piyo"] = "pyo";
  while(cin.getline(s,sizeof(s))){
    int n = strlen(s);
    string t(s);
    // split
    vector<string> spl;
    istringstream iss(t);
    string tmp;
    while(getline(iss,tmp,' ')) spl.push_back(tmp);
    // go
    if(spl.size()<=1){
      puts(NG);
      continue;
    }
    if(spl[0]=="rabi"){
      bool flag = false;
      FOR(i,5,n){
        if(isalnum(s[i])){
          flag = true;
          break;
        }
      }
      if(flag){
        puts(OK);
      }else{
        puts(NG);
      }
    }else{
      if(mp.count(spl[0])==0){
        puts(NG);
      }else{
        string po = mp[spl[0]];
        string ar = t.substr(po.size()+1);
        REP(i,ar.size()){
          ar[i] = tolower(ar[i]);
        }
        bool flag = false;
        FOR(i,po.size(),po.size()+3+1){
          if(ar.size()<i)continue;
          if(ar.substr(ar.size()-i,po.size())!=po)continue;
          bool sub = true;
          FOR(j,ar.size()-i+po.size(),ar.size()){
            if(isalnum(ar[j])){
              sub = false;
              break;
            }
          }
          if(!sub)continue;
          flag = true;
          break;
        }
        if(flag){
          puts(OK);
        }else{
          puts(NG);
        }
        // if(po==ar){
        //   puts(OK);
        // }else if(ar.size()>=po.size()&&ar.substr(0,po.size())==po){
        //   if(ar.size()>po.size()+3){
        //     puts(NG);
        //   }else{
        //     bool flag = true;
        //     FOR(i,po.size(),ar.size()){
        //       if(isalnum(ar[i])){
        //         flag = false;
        //         break;
        //       }
        //     }
        //     if(flag){
        //       puts(OK);
        //     }else{
        //       puts(NG);
        //     }
        //   }
        // }else{
        //   puts(NG);
        // }
      }
    }
  }
  return 0;
}
0