Submission #1939130
Source Code Expand
#include<stdio.h> #include<math.h> #include<algorithm> #include<queue> #include<deque> #include<string> #include<string.h> #include<vector> #include<set> #include<map> #include<bitset> #include<stdlib.h> #include<cassert> using namespace std; const long long mod=1000000007; const long long inf=mod*mod; const long long d2=500000004; const double EPS=1e-6; const double PI=acos(-1.0); int ABS(int a){return max(a,-a);} long long ABS(long long a){return max(a,-a);} char A[8100]; char B[8100]; int sum[8100]; int main(){ scanf("%s%s",A,B); int n=strlen(A); bool dame=true; for(int i=0;i<3*n;i++){ A[i+n]=A[i]; B[i+n]=B[i]; if(B[i]=='1')dame=false; } set<int>S; for(int i=0;i<n*4;i++){ if(B[i]=='1')S.insert(i); sum[i+1]=sum[i]+B[i]-'0'; } int ret=mod; for(int i=0;i<n;i++){ if(dame){ bool ok=true; for(int j=0;j<n;j++)if(A[i+j]!=B[j])ok=false; if(ok)ret=0; continue; } vector<pair<int,int> >v; int tmp=0; for(int j=0;j<n;j++){ if(A[i+j]!=B[j]){ tmp++; int L=n+j; int R=n+i+j; if(sum[R+1]==sum[L]){ int prev=*(--(S.lower_bound(L))); int nx=*(S.lower_bound(R)); v.push_back(make_pair(prev-L,nx-R)); } } } std::sort(v.begin(),v.end()); int cur=mod; if(v.size()==0)cur=0; int ri=0; for(int j=0;j<v.size();j++){ cur=min(cur,-v[j].first*2+ri*2); ri=max(ri,v[j].second); } cur=min(cur,ri*2); ret=min(ret,tmp+i+cur); // printf("%d %d %d\n",tmp,i,cur); if(i==0)continue; v.clear(); for(int j=0;j<n;j++){ if(A[i+j]!=B[j]){ int R=2*n+j; int L=n+i+j; if(sum[R+1]==sum[L]){ int prev=*(--(S.lower_bound(L))); int nx=*(S.lower_bound(R)); v.push_back(make_pair(prev-L,nx-R)); } } } std::sort(v.begin(),v.end()); cur=mod; if(v.size()==0)cur=0; ri=0; for(int j=0;j<v.size();j++){ cur=min(cur,-v[j].first*2+ri*2); ri=max(ri,v[j].second); } cur=min(cur,ri*2); ret=min(ret,tmp+n-i+cur); // printf("%d %d %d\n",tmp,n-i,cur); } if(ret==mod){ ret=-1; } printf("%d\n",ret); }
Submission Info
Submission Time | |
---|---|
Task | D - Shift and Flip |
User | tozangezan |
Language | C++14 (GCC 5.4.1) |
Score | 1000 |
Code Size | 2133 Byte |
Status | AC |
Exec Time | 131 ms |
Memory | 640 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:26:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%s%s",A,B); ^
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1000 / 1000 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt |
All | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_1_43.txt, subtask_1_44.txt, subtask_1_45.txt, subtask_1_46.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 1 ms | 256 KB |
sample_02.txt | AC | 1 ms | 256 KB |
sample_03.txt | AC | 1 ms | 256 KB |
sample_04.txt | AC | 1 ms | 256 KB |
subtask_1_01.txt | AC | 1 ms | 256 KB |
subtask_1_02.txt | AC | 1 ms | 256 KB |
subtask_1_03.txt | AC | 1 ms | 256 KB |
subtask_1_04.txt | AC | 5 ms | 256 KB |
subtask_1_05.txt | AC | 16 ms | 640 KB |
subtask_1_06.txt | AC | 5 ms | 256 KB |
subtask_1_07.txt | AC | 10 ms | 640 KB |
subtask_1_08.txt | AC | 5 ms | 256 KB |
subtask_1_09.txt | AC | 1 ms | 256 KB |
subtask_1_10.txt | AC | 1 ms | 256 KB |
subtask_1_11.txt | AC | 45 ms | 512 KB |
subtask_1_12.txt | AC | 44 ms | 512 KB |
subtask_1_13.txt | AC | 45 ms | 512 KB |
subtask_1_14.txt | AC | 131 ms | 256 KB |
subtask_1_15.txt | AC | 75 ms | 256 KB |
subtask_1_16.txt | AC | 52 ms | 256 KB |
subtask_1_17.txt | AC | 49 ms | 384 KB |
subtask_1_18.txt | AC | 39 ms | 256 KB |
subtask_1_19.txt | AC | 41 ms | 256 KB |
subtask_1_20.txt | AC | 42 ms | 256 KB |
subtask_1_21.txt | AC | 104 ms | 384 KB |
subtask_1_22.txt | AC | 103 ms | 256 KB |
subtask_1_23.txt | AC | 122 ms | 256 KB |
subtask_1_24.txt | AC | 122 ms | 256 KB |
subtask_1_25.txt | AC | 122 ms | 256 KB |
subtask_1_26.txt | AC | 1 ms | 256 KB |
subtask_1_27.txt | AC | 1 ms | 256 KB |
subtask_1_28.txt | AC | 3 ms | 256 KB |
subtask_1_29.txt | AC | 8 ms | 256 KB |
subtask_1_30.txt | AC | 30 ms | 384 KB |
subtask_1_31.txt | AC | 1 ms | 256 KB |
subtask_1_32.txt | AC | 1 ms | 256 KB |
subtask_1_33.txt | AC | 2 ms | 256 KB |
subtask_1_34.txt | AC | 3 ms | 256 KB |
subtask_1_35.txt | AC | 9 ms | 256 KB |
subtask_1_36.txt | AC | 34 ms | 384 KB |
subtask_1_37.txt | AC | 1 ms | 256 KB |
subtask_1_38.txt | AC | 1 ms | 256 KB |
subtask_1_39.txt | AC | 3 ms | 256 KB |
subtask_1_40.txt | AC | 9 ms | 256 KB |
subtask_1_41.txt | AC | 32 ms | 384 KB |
subtask_1_42.txt | AC | 31 ms | 384 KB |
subtask_1_43.txt | AC | 32 ms | 384 KB |
subtask_1_44.txt | AC | 36 ms | 384 KB |
subtask_1_45.txt | AC | 34 ms | 384 KB |
subtask_1_46.txt | AC | 35 ms | 384 KB |