Submission #20875

#TimeUsernameProblemLanguageResultExecution timeMemory
20875gs14004돌 옮기기 (GA7_stone)C++11
100 / 100
103 ms5316 KiB
#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+1-2*n, 4*n-i-1}); p = fail[p]; } } if(ans > 1e8){ puts("-1"); return 0; } cout << 1ll * ans * l; }

Compilation message (stderr)

stone.cpp: In function 'int main()':
stone.cpp:21:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=1; i<s.size(); i++){
                ^
stone.cpp:27:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0; i<t.size(); i++){
                ^
stone.cpp:30:8: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(p == s.size()){
        ^
stone.cpp:15:20: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%*d %s",t);
                    ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...