Submission #1541872


Source Code Expand

#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cstring>
#include <queue>
#include <functional>
#include <map>
#include <set>
#define SIZE 2005

using namespace std;
typedef long long int ll;
typedef pair <int,int> P;

char A[SIZE],B[SIZE];
int right[SIZE],left[SIZE];

int solve()
{
	int n=strlen(A);
	vector <int> vx;
	for(int i=0;i<n;i++) if(B[i]=='1') vx.push_back(i);
	for(int i=0;i<n;i++) if(B[i]=='1') vx.push_back(i+n);
	int pos=vx.size()-1;
	for(int i=n-1;i>=0;i--)
	{
		while(pos>0&&vx[pos-1]>=i) pos--;
		right[i]=vx[pos]-i;
	}
	vx.clear();
	for(int i=0;i<n;i++) if(B[i]=='1') vx.push_back(i-n);
	for(int i=0;i<n;i++) if(B[i]=='1') vx.push_back(i);
	pos=0;
	for(int i=0;i<n;i++)
	{
		while(pos+1<vx.size()&&vx[pos+1]<=i) pos++;
		left[i]=i-vx[pos];
	}
	//for(int i=0;i<n;i++) printf("%d %d\n",left[i],right[i]);
	//puts("");
	int ret=n*1000;
	for(int i=0;i<=n;i++)
	{
		int cnt=0;
		vector <P> rg;
		for(int j=0;j<n;j++)
		{
			int to=(i+j)%n;
			if(B[to]!=A[j])
			{
				cnt++;
				rg.push_back(P(right[j],left[j]));
			}
		}
		if(cnt==0)
		{
			ret=min(ret,i);
			continue;
		}
		sort(rg.begin(),rg.end());
		int mx=0,pos=rg.size()-1;
		for(int j=n;j>=i;j--)
		{
			while(pos>=0&&rg[pos].first>j)
			{
				mx=max(mx,rg[pos].second);
				pos--;
			}
			ret=min(ret,(mx+j)*2-i+cnt);
		}
	}
	return ret;
}
int main()
{
	scanf("%s",&A);
	scanf("%s",&B);
	int n=strlen(A);
	bool up=true;
	for(int i=0;i<n;i++) if(B[i]=='1') up=false;
	if(up)
	{
		up=true;
		for(int i=0;i<n;i++) if(A[i]=='1') up=false;
		if(up) puts("0");
		else puts("-1");
		return 0;
	}
	int ret=solve();
	for(int l=0,r=n-1;l<r;l++,r--) swap(A[l],A[r]),swap(B[l],B[r]);
	ret=min(ret,solve());
	printf("%d\n",ret);
	return 0;
}

Submission Info

Submission Time
Task D - Shift and Flip
User yutaka1999
Language C++14 (GCC 5.4.1)
Score 1000
Code Size 1838 Byte
Status AC
Exec Time 315 ms
Memory 256 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:77:15: warning: format ‘%s’ expects argument of type ‘char*’, but argument 2 has type ‘char (*)[2005]’ [-Wformat=]
  scanf("%s",&A);
               ^
./Main.cpp:78:15: warning: format ‘%s’ expects argument of type ‘char*’, but argument 2 has type ‘char (*)[2005]’ [-Wformat=]
  scanf("%s",&B);
               ^
./Main.cpp:77:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s",&A);
                ^
./Main.cpp:78:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s",&B);
                ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 1000 / 1000
Status
AC × 4
AC × 54
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 1 ms 256 KB
subtask_1_05.txt AC 173 ms 256 KB
subtask_1_06.txt AC 1 ms 256 KB
subtask_1_07.txt AC 27 ms 256 KB
subtask_1_08.txt AC 1 ms 256 KB
subtask_1_09.txt AC 1 ms 256 KB
subtask_1_10.txt AC 2 ms 256 KB
subtask_1_11.txt AC 218 ms 256 KB
subtask_1_12.txt AC 212 ms 256 KB
subtask_1_13.txt AC 223 ms 256 KB
subtask_1_14.txt AC 315 ms 256 KB
subtask_1_15.txt AC 181 ms 256 KB
subtask_1_16.txt AC 193 ms 256 KB
subtask_1_17.txt AC 198 ms 256 KB
subtask_1_18.txt AC 261 ms 256 KB
subtask_1_19.txt AC 288 ms 256 KB
subtask_1_20.txt AC 286 ms 256 KB
subtask_1_21.txt AC 221 ms 256 KB
subtask_1_22.txt AC 221 ms 256 KB
subtask_1_23.txt AC 173 ms 256 KB
subtask_1_24.txt AC 174 ms 256 KB
subtask_1_25.txt AC 174 ms 256 KB
subtask_1_26.txt AC 1 ms 256 KB
subtask_1_27.txt AC 3 ms 256 KB
subtask_1_28.txt AC 8 ms 256 KB
subtask_1_29.txt AC 37 ms 256 KB
subtask_1_30.txt AC 155 ms 256 KB
subtask_1_31.txt AC 1 ms 256 KB
subtask_1_32.txt AC 1 ms 256 KB
subtask_1_33.txt AC 3 ms 256 KB
subtask_1_34.txt AC 10 ms 256 KB
subtask_1_35.txt AC 38 ms 256 KB
subtask_1_36.txt AC 174 ms 256 KB
subtask_1_37.txt AC 2 ms 256 KB
subtask_1_38.txt AC 3 ms 256 KB
subtask_1_39.txt AC 11 ms 256 KB
subtask_1_40.txt AC 44 ms 256 KB
subtask_1_41.txt AC 163 ms 256 KB
subtask_1_42.txt AC 157 ms 256 KB
subtask_1_43.txt AC 168 ms 256 KB
subtask_1_44.txt AC 177 ms 256 KB
subtask_1_45.txt AC 175 ms 256 KB
subtask_1_46.txt AC 174 ms 256 KB