Submission #1612883


Source Code Expand

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<set>
#include<bitset>
#include<map>

#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)

using namespace std;

typedef long long LL;
typedef double db;

int get(){
	char ch;
	while(ch=getchar(),(ch<'0'||ch>'9')&&ch!='-');
	if (ch=='-'){
		int s=0;
		while(ch=getchar(),ch>='0'&&ch<='9')s=s*10+ch-'0';
		return -s;
	}
	int s=ch-'0';
	while(ch=getchar(),ch>='0'&&ch<='9')s=s*10+ch-'0';
	return s;
}

const int N = 2003;

int n;
int a[N],b[N];
struct point{
	int x,y;
	friend bool operator < (point a,point b){
		return a.x<b.x;
	}
}p[N];
int k;
int rig[N],lef[N];
int preb[N];
int cnt[N];

int getv(int l,int r){
	if (l<=r)return preb[r]-preb[l-1];
	return preb[r]-preb[l-1]+preb[n];
}

int main(){
	char s[N];
	scanf("%s",s+1);
	n=strlen(s+1);
	fo(i,1,n)a[i]=s[i]-'0';
	scanf("%s",s+1);
	fo(i,1,n)b[i]=s[i]-'0';
	fo(i,1,n)preb[i]=preb[i-1]+b[i];
	if (!preb[n]){
		fo(i,1,n)
		if (a[i]){
			printf("-1\n");
			return 0;
		}
		printf("0\n");
		return 0;
	}
	int w=0;
	fo(i,1,n)if (b[i]){w=i;break;}
	rig[n]=(1-b[n])*w;fd(i,n-1,1)rig[i]=(1-b[i])*(rig[i+1]+1);
	fd(i,n,1)if (b[i]){w=i;break;}
	lef[1]=(1-b[1])*(n-w+1);fo(i,2,n)lef[i]=(1-b[i])*(lef[i-1]+1);
	int ans=1e+9;
	fo(l,-n+1,n-1){
		k=0;int v=0;
		fo(i,1,n){
			if (a[i]&&!b[(i+n-l-1)%n+1]){
				int x=(i+n-l-1)%n+1;
				if (l>=0&&getv(x,i)==0){p[++k].x=rig[i];p[k].y=lef[x];}
				if (l<0&&getv(i,x)==0){p[++k].x=lef[i];p[k].y=rig[x];}
			}
			if (a[i]!=b[(i+n-l-1)%n+1])v++;
		}
		fo(i,0,n)cnt[i]=0;
		sort(p+1,p+1+k);
		fo(i,1,k)cnt[p[i].y]++;
		int w=n;
		int mv=0;
		while(w&&!cnt[w])w--;
		mv=w*2;
		fo(i,1,k){
			cnt[p[i].y]--;
			while(w&&!cnt[w])w--;
			mv=min(mv,w*2+p[i].x*2);
		}
		mv+=v+abs(l);
		ans=min(ans,mv);
	}
	printf("%d\n",ans);
	return 0;
}

Submission Info

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

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:53:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s",s+1);
                 ^
./Main.cpp:56:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s",s+1);
                 ^

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 38 ms 256 KB
subtask_1_06.txt AC 1 ms 256 KB
subtask_1_07.txt AC 41 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 112 ms 256 KB
subtask_1_12.txt AC 94 ms 256 KB
subtask_1_13.txt AC 110 ms 256 KB
subtask_1_14.txt AC 95 ms 256 KB
subtask_1_15.txt AC 79 ms 256 KB
subtask_1_16.txt AC 62 ms 256 KB
subtask_1_17.txt AC 63 ms 256 KB
subtask_1_18.txt AC 58 ms 256 KB
subtask_1_19.txt AC 63 ms 256 KB
subtask_1_20.txt AC 68 ms 256 KB
subtask_1_21.txt AC 74 ms 256 KB
subtask_1_22.txt AC 74 ms 256 KB
subtask_1_23.txt AC 96 ms 256 KB
subtask_1_24.txt AC 96 ms 256 KB
subtask_1_25.txt AC 96 ms 256 KB
subtask_1_26.txt AC 2 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 18 ms 256 KB
subtask_1_30.txt AC 65 ms 256 KB
subtask_1_31.txt AC 1 ms 256 KB
subtask_1_32.txt AC 2 ms 256 KB
subtask_1_33.txt AC 2 ms 256 KB
subtask_1_34.txt AC 6 ms 256 KB
subtask_1_35.txt AC 16 ms 256 KB
subtask_1_36.txt AC 69 ms 256 KB
subtask_1_37.txt AC 2 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 18 ms 256 KB
subtask_1_41.txt AC 65 ms 256 KB
subtask_1_42.txt AC 63 ms 256 KB
subtask_1_43.txt AC 65 ms 256 KB
subtask_1_44.txt AC 72 ms 256 KB
subtask_1_45.txt AC 69 ms 256 KB
subtask_1_46.txt AC 69 ms 256 KB