Submission #3422026


Source Code Expand

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;
const int Max_N(2050);

int N, Ans, Lst[Max_N], Nxt[Max_N];
char A[Max_N], B[Max_N];

bool all_0(char S[Max_N])
{
	for (int i = 1;i <= N;++i)
		if (S[i] != '0')
			return false;
	return true;
}

struct node
{
	int x, y;
	void give(int _x, int _y)
	{
		x = _x, y = _y;
	}
	inline bool operator<(const node &b) const
	{
		return x < b.x;
	}
};
int M, Suf[Max_N];
node V[Max_N];

int work()
{
	if (M == 0)
		return 0;
	sort(V + 1, V + 1 + M);
	Suf[M + 1] = 0;
	for (int i = M;i >= 1;--i)
		Suf[i] = max(Suf[i + 1], V[i].y);
	int Ans(min(V[M].x, Suf[1]));
	for (int i = 1;i <= M - 1;++i)
		Ans = min(Ans, V[i].x + Suf[i + 1]);
	return Ans;
}

int main()
{
	scanf("%s", A + 1), N = strlen(A + 1);
	scanf("%s", B + 1);
	if (all_0(B))
	{
		printf("%d", all_0(A) ? 0 : -1);
		return 0;
	}
	for (int s = 1;s <= N;++s)
		if (B[s] == '1')
		{
			for (int i = s;i <= N;++i)
				Lst[i] = (B[i] == '1' ? 0 : Lst[i - 1] + 1);
			Lst[0] = Lst[N];
			for (int i = 1;i <= s - 1;++i)
				Lst[i] = (B[i] == '1' ? 0 : Lst[i - 1] + 1);
			for (int i = s;i >= 1;--i)
				Nxt[i] = (B[i] == '1' ? 0 : Nxt[i + 1] + 1);
			Nxt[N + 1] = Nxt[1];
			for (int i = N;i >= s + 1;--i)
				Nxt[i] = (B[i] == '1' ? 0 : Nxt[i + 1] + 1);
			break;
		}
	Ans = 0X3F3F3F3F;
	for (int l = 0;l <= N - 1;++l)
	{
		M = 0;
		for (int i = 1, j;i <= N;++i)
		{
			j = i - l;
			if (j <= 0)
				j += N;
			if (A[i] != B[j])
				V[++M].give(max(Lst[i] - l, 0), Nxt[i]);
		}
		Ans = min(Ans, l + work() * 2 + M);
	}
	for (int r = 1;r <= N - 1;++r)
	{
		M = 0;
		for (int i = 1, j;i <= N;++i)
		{
			j = i + r;
			if (j > N)
				j -= N;
			if (A[i] != B[j])
				V[++M].give(max(Nxt[i] - r, 0), Lst[i]);
		}
		Ans = min(Ans, r + work() * 2 + M);
	}
	printf("%d", Ans);
	return 0;
}

Submission Info

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

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:51:39: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s", A + 1), N = strlen(A + 1);
                                       ^
./Main.cpp:52:20: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%s", B + 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 128 KB
sample_02.txt AC 1 ms 128 KB
sample_03.txt AC 1 ms 128 KB
sample_04.txt AC 1 ms 128 KB
subtask_1_01.txt AC 1 ms 128 KB
subtask_1_02.txt AC 1 ms 128 KB
subtask_1_03.txt AC 1 ms 128 KB
subtask_1_04.txt AC 1 ms 128 KB
subtask_1_05.txt AC 93 ms 256 KB
subtask_1_06.txt AC 1 ms 128 KB
subtask_1_07.txt AC 8 ms 128 KB
subtask_1_08.txt AC 1 ms 128 KB
subtask_1_09.txt AC 0 ms 128 KB
subtask_1_10.txt AC 1 ms 128 KB
subtask_1_11.txt AC 83 ms 256 KB
subtask_1_12.txt AC 92 ms 256 KB
subtask_1_13.txt AC 83 ms 256 KB
subtask_1_14.txt AC 98 ms 256 KB
subtask_1_15.txt AC 79 ms 256 KB
subtask_1_16.txt AC 66 ms 256 KB
subtask_1_17.txt AC 67 ms 256 KB
subtask_1_18.txt AC 66 ms 256 KB
subtask_1_19.txt AC 75 ms 256 KB
subtask_1_20.txt AC 77 ms 256 KB
subtask_1_21.txt AC 77 ms 256 KB
subtask_1_22.txt AC 54 ms 256 KB
subtask_1_23.txt AC 101 ms 256 KB
subtask_1_24.txt AC 101 ms 256 KB
subtask_1_25.txt AC 101 ms 256 KB
subtask_1_26.txt AC 1 ms 128 KB
subtask_1_27.txt AC 1 ms 128 KB
subtask_1_28.txt AC 3 ms 128 KB
subtask_1_29.txt AC 14 ms 128 KB
subtask_1_30.txt AC 61 ms 256 KB
subtask_1_31.txt AC 1 ms 128 KB
subtask_1_32.txt AC 1 ms 128 KB
subtask_1_33.txt AC 1 ms 128 KB
subtask_1_34.txt AC 4 ms 128 KB
subtask_1_35.txt AC 14 ms 128 KB
subtask_1_36.txt AC 61 ms 256 KB
subtask_1_37.txt AC 1 ms 128 KB
subtask_1_38.txt AC 1 ms 128 KB
subtask_1_39.txt AC 4 ms 128 KB
subtask_1_40.txt AC 15 ms 128 KB
subtask_1_41.txt AC 56 ms 128 KB
subtask_1_42.txt AC 55 ms 256 KB
subtask_1_43.txt AC 59 ms 256 KB
subtask_1_44.txt AC 63 ms 128 KB
subtask_1_45.txt AC 61 ms 256 KB
subtask_1_46.txt AC 62 ms 128 KB