# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
20873 | 2017-02-28T16:26:08 Z | gs14004 | 돌 옮기기 (GA7_stone) | C++11 | 39 ms | 4488 KB |
#include <bits/stdc++.h> using namespace std; typedef long long lint; typedef long double llf; typedef pair<lint, lint> pi; const int mod = 1e9 + 7; string s, t; int l, n, fail[400005]; int main(){ cin >> l >> n; for(int i=0; i<2*n; i++){ char t[5]; scanf("%*d %s",t); s.push_back(*t); } string t = s + s; for(auto &i : s) i = 'W' + 'B' - i; int p = 0, ans = 1e9; for(int i=1; i<s.size(); i++){ while(p > 0 && s[i] != s[p]) p = fail[p]; if(s[i] == s[p]) p++; fail[i+1] = p; } p = 0; for(int i=0; i<t.size(); i++){ while(p > 0 && t[i] != s[p]) p = fail[p]; if(t[i] == s[p]) p++; if(p == s.size()){ ans = min({ans, i - (int)t.size(), 2*n-i + (int)t.size()}); p = fail[p]; } } if(ans > 1e8){ puts("-1"); return 0; } cout << 1ll * ans * l; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 3580 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 3580 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 3580 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 3580 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 39 ms | 4488 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |