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
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 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