結果
問題 | No.252 "良問"(良問とは言っていない (2) |
ユーザー | koyopro |
提出日時 | 2015-10-07 18:05:39 |
言語 | C++11 (gcc 11.4.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,365 bytes |
コンパイル時間 | 1,305 ms |
コンパイル使用メモリ | 163,644 KB |
実行使用メモリ | 7,896 KB |
最終ジャッジ日時 | 2024-07-20 01:54:21 |
合計ジャッジ時間 | 2,721 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 51 ms
5,888 KB |
testcase_01 | AC | 85 ms
6,272 KB |
testcase_02 | AC | 49 ms
6,256 KB |
testcase_03 | RE | - |
testcase_04 | RE | - |
testcase_05 | RE | - |
testcase_06 | AC | 4 ms
6,016 KB |
ソースコード
#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]; REP(i,s.size()) ming[i]=minp[i]=100; int problemcnt[MAX]; problemcnt[0] = 0; REP(i,s.size()) { int cnt = 0; REP(j,4) { cnt += (s[i+j] != good[j]); } problemcnt[i] = (i==0) ? 0 : problemcnt[i-1]; if (s.substr(i, 7) == problem) { problemcnt[i]++; } 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) { int pc = (i==0) ? 0 : problemcnt[i]; minc = min(minc, ming[i] + minp[i+4] + pc); } ans.push_back(minc); } for (auto&& a : ans) { cout << a << endl; } return 0; }