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