結果
問題 | No.252 "良問"(良問とは言っていない (2) |
ユーザー | koyopro |
提出日時 | 2015-10-07 18:01:03 |
言語 | C++11 (gcc 11.4.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,176 bytes |
コンパイル時間 | 1,404 ms |
コンパイル使用メモリ | 161,796 KB |
実行使用メモリ | 7,028 KB |
最終ジャッジ日時 | 2024-07-20 01:54:16 |
合計ジャッジ時間 | 2,892 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | WA | - |
testcase_01 | WA | - |
testcase_02 | WA | - |
testcase_03 | RE | - |
testcase_04 | RE | - |
testcase_05 | RE | - |
testcase_06 | WA | - |
ソースコード
#include "bits/stdc++.h" using namespace std; #define REP(i, n) for(int i=0; i<(n); i++) #define RREP(i, n) for(int i=(n-1); i>=0; i--) #define MAX 222222 string s; int N; signed main() { cin >> N; vector<int> ans; string good = "good"; string problem = "problem"; REP(n,N) { cin >> s; int ming[MAX]; int minp[MAX]; int problemcnt = 0; REP(i,s.size()) { int cnt = 0; REP(j,4) { cnt += (s[i+j] != good[j]); } if (s.substr(i, 7) == problem) problemcnt++; cnt += problemcnt; if (i == 0) ming[i] = cnt; else ming[i] = min(ming[i-1], cnt); } RREP(i,s.size()-6) { int cnt = 0; REP(j,7) { cnt += (s[i+j] != problem[j]); } if (i == s.size()-7) minp[i] = cnt; else minp[i] = min(minp[i+1], cnt); } int minc = 9999; REP(i,s.size()-7) { minc = min(minc, ming[i] + minp[i+4]); } ans.push_back(minc); } for (auto&& a : ans) { cout << a << endl; } return 0; }