Submission #6328

#TimeUsernameProblemLanguageResultExecution timeMemory
6328jhs7jhs돌 옮기기 (GA7_stone)C++98
56 / 100
92 ms3236 KiB
#include<stdio.h> #include<string.h> long long r; int n; char s[200010]={0},p[400020]={0}; long long x[200010]={0}; long long ans=-1; long long dist(long long p,long long q){ if(p<q) return q-p; else return r - (p-q); } int main() { int i; int first,last; long long sum = 0; char *temp; char t[2]={0}; scanf("%lld%d",&r,&n); n *= 2; for(i=0;i<n;i++){ scanf("%lld%s",&x[i],t); s[i] = t[0]; } for(i=0;i<n;i++){ if(s[i] == 'W') p[i] = 'B'; else p[i] = 'W'; } for(i=0;i<n;i++) p[i+n] = p[i]; temp = strstr(p,s); if(temp == NULL){ printf("-1\n"); return 0; } first = last = (int)(temp - p); while(1){ temp = strstr(p+last+1,s); if(temp == NULL) break; last = temp - p; } for(i=0;i<n;i++) sum += dist(x[i],x[(i+first)%n]); ans = sum, sum = 0; for(i=0;i<n;i++) sum += dist(x[(i+last)%n],x[i]); if(ans > sum) ans = sum; printf("%lld\n",ans); return 0; }
#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...