Submission #2008503


Source Code Expand

#include <bits/stdc++.h>

using std::min;

const int N=2010;

int n,pre[N],lst[N],l[N],r[N];
bool can[N<<1];
char A[N<<1],B[N];

void Init() {
	scanf("%s%s",A,B);
	n=strlen(A);
}

void Solve() {
	int ans=n*n+1,fir=n*n+1000,end=n*n+1000;
	for (int i=0;i<n;++i) if (B[i]=='1') { fir=i; break; }
	for (int i=n-1;i>=0;--i) if (B[i]=='1') { end=i; break; }
	for (int i=0;i<n;++i) if (B[i]=='1') pre[i]=i;else pre[i]=i?pre[i-1]:end-n;
	for (int i=n-1;i>=0;--i)  if (B[i]=='1') lst[i]=i;else lst[i]=i<n-1?lst[i+1]:fir+n;
	
	for (int i=0;i<n;++i) A[i+n]=A[i],l[i]=n+1,r[i]=n+1;
	for (int p=0;p<=n;++p) {
		int cnt=0,movl=0,movr=0;
		for (int j=n-1;j>=0;--j) {
			if (B[j]=='1') can[(j+p)%n]=1;
			else l[(j+p)%n]=min(l[(j+p)%n],j-pre[j]),r[(j+p)%n]=min(r[(j+p)%n],lst[j]-j);
			if (A[j+p]!=B[j] && cnt!=-1) {
				if (can[(j+p)%n]) cnt++;
				else if ((l[(j+p)%n]<=n && l[(j+p)%n]>=0) || (r[(j+p)%n]<=n && r[(j+p)%n]>=0)) {
					int d1=r[(j+p)%n],d2=l[(j+p)%n];
					cnt++;
					if (d1<=movr || d2<=movl) continue;
					else if (d1<d2) movr=d1;else movl=d2;
				}
				else cnt=n*n+1;
			}
		}
		ans=min(ans,cnt+p+movr*2+movl*2);
	}
	for (int i=0;i<n;++i) l[i]=n+1,r[i]=n+1;
	for (int i=0;i<n*2;++i) can[i]=0;
	for (int p=n;p>=0;--p) {
		int cnt=0,movr=0,movl=0;
		for (int j=0;j<n;++j) {
			if (B[j]=='1') can[(j+p)%n]=1;
			else l[(j+p)%n]=min(l[(j+p)%n],j-pre[j]),r[(j+p)%n]=min(r[(j+p)%n],lst[j]-j);
			if (A[j+p]!=B[j] && cnt!=-1) {
				if (can[(j+p)%n]) cnt++;
				else if ((l[(j+p)%n]<=n && l[(j+p)%n]>=0) || (r[(j+p)%n]<=n && r[(j+p)%n]>=0)) {
					int d1=r[(j+p)%n],d2=l[(j+p)%n];
					cnt++;
					if (d1<=movr || d2<=movl) continue;
					else if (d1<d2) movr=d1;else movl=d2;
				}
				else cnt=n*n+1;
			}
		}
		ans=min(ans,cnt+n-p+movr*2+movl*2);
	}
	if (ans==n*n+1) printf("-1\n");
	else printf("%d\n",ans);
}

int main() {
	Init();
	Solve();
	return 0;
}

Submission Info

Submission Time
Task D - Shift and Flip
User Mcallor
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1927 Byte
Status WA
Exec Time 97 ms
Memory 256 KB

Compile Error

./Main.cpp: In function ‘void Init()’:
./Main.cpp:12: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 0 / 1000
Status
AC × 4
AC × 49
WA × 5
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 39 ms 256 KB
subtask_1_05.txt AC 47 ms 256 KB
subtask_1_06.txt AC 65 ms 256 KB
subtask_1_07.txt AC 31 ms 256 KB
subtask_1_08.txt AC 39 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 97 ms 256 KB
subtask_1_12.txt AC 81 ms 256 KB
subtask_1_13.txt AC 96 ms 256 KB
subtask_1_14.txt AC 56 ms 256 KB
subtask_1_15.txt AC 55 ms 256 KB
subtask_1_16.txt AC 55 ms 256 KB
subtask_1_17.txt AC 55 ms 256 KB
subtask_1_18.txt AC 58 ms 256 KB
subtask_1_19.txt AC 65 ms 256 KB
subtask_1_20.txt AC 71 ms 256 KB
subtask_1_21.txt AC 50 ms 256 KB
subtask_1_22.txt AC 50 ms 256 KB
subtask_1_23.txt AC 60 ms 256 KB
subtask_1_24.txt AC 60 ms 256 KB
subtask_1_25.txt AC 60 ms 256 KB
subtask_1_26.txt AC 1 ms 256 KB
subtask_1_27.txt AC 2 ms 256 KB
subtask_1_28.txt AC 5 ms 256 KB
subtask_1_29.txt AC 17 ms 256 KB
subtask_1_30.txt AC 62 ms 256 KB
subtask_1_31.txt AC 1 ms 256 KB
subtask_1_32.txt WA 1 ms 256 KB
subtask_1_33.txt AC 2 ms 256 KB
subtask_1_34.txt WA 5 ms 256 KB
subtask_1_35.txt AC 16 ms 256 KB
subtask_1_36.txt WA 64 ms 256 KB
subtask_1_37.txt WA 1 ms 256 KB
subtask_1_38.txt AC 2 ms 256 KB
subtask_1_39.txt AC 5 ms 256 KB
subtask_1_40.txt AC 17 ms 256 KB
subtask_1_41.txt WA 61 ms 256 KB
subtask_1_42.txt AC 60 ms 256 KB
subtask_1_43.txt AC 60 ms 256 KB
subtask_1_44.txt AC 66 ms 256 KB
subtask_1_45.txt AC 65 ms 256 KB
subtask_1_46.txt AC 64 ms 256 KB