Submission #2964561
Source Code Expand
#include<bits/stdc++.h> #define int long long #define rint register int using namespace std; template<typename tp> inline void read(tp &x) { x = 0; char c = getchar(); int f = 0; for (; c < '0' || c > '9'; f |= c == '-', c = getchar()); for (; c >= '0' && c <= '9'; x = (x << 3) + (x << 1) + c - '0', c = getchar()); if (f) x = -x; } const int N = 2222 * 2; char a[N], b[N]; int n, ok1 = 0, ok2 = 0, ans = 1e18; int st[N], top = 0, L[N], R[N], pos[N]; inline int getmod(int x) { return ((x % n) + n) % n; } inline void init(void) { memset(L, 0, sizeof L); memset(R, 0, sizeof R); for (int i = 0; i < n; i ++) b[i + n] = b[i]; for (int i = 0; i < n; i ++) { while (b[getmod(i + L[i])] == 0) -- L[i]; while (b[getmod(i + R[i])] == 0) ++ R[i]; } for (int i = 0; i < n; i ++) pos[i] = i; auto cmpLR = [] (int a, int b) { return R[a] < R[b] || R[a] == R[b] && L[a] > L[b]; }; sort(pos, pos + n, cmpLR); } inline void doit(void) { init(); for (int ed = 0; ed <= (n - 1); ed ++) { for (int _ = 0; _ < n; _ ++) { int i = pos[_]; if (a[getmod(i + ed)] != b[i]) st[++ top] = i; } int l = 0; int all = top; while (top) { int i = st[top --]; ans = min(ans, 2 * (max(ed, R[i]) - l) - ed + all); l = min(l, L[i]); } ans = min(ans, 2 * (max(ed, 0ll) - l) - ed + all); } } main(void) { scanf("%s", a); scanf("%s", b); n = strlen(a); for (int i = 0; i < n; i ++) { a[i] -= '0'; ok1 |= a[i]; } for (int i = 0; i < n; i ++) { b[i] -= '0'; ok2 |= b[i]; } if (!ok2 && ok1) return puts("-1"), 0; else if (!ok2 && !ok1) return puts("0"), 0; doit(); reverse(a, a + n); reverse(b, b + n); doit(); cout << ans << "\n"; }
Submission Info
Submission Time | |
---|---|
Task | D - Shift and Flip |
User | vjudge3 |
Language | C++14 (GCC 5.4.1) |
Score | 1000 |
Code Size | 1824 Byte |
Status | AC |
Exec Time | 345 ms |
Memory | 384 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:65:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%s", a); scanf("%s", b); ^ ./Main.cpp:65:33: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%s", a); scanf("%s", b); ^
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 | 384 KB |
sample_02.txt | AC | 1 ms | 256 KB |
sample_03.txt | AC | 1 ms | 384 KB |
sample_04.txt | AC | 1 ms | 384 KB |
subtask_1_01.txt | AC | 1 ms | 256 KB |
subtask_1_02.txt | AC | 1 ms | 384 KB |
subtask_1_03.txt | AC | 1 ms | 384 KB |
subtask_1_04.txt | AC | 1 ms | 256 KB |
subtask_1_05.txt | AC | 185 ms | 384 KB |
subtask_1_06.txt | AC | 1 ms | 256 KB |
subtask_1_07.txt | AC | 167 ms | 384 KB |
subtask_1_08.txt | AC | 1 ms | 256 KB |
subtask_1_09.txt | AC | 1 ms | 384 KB |
subtask_1_10.txt | AC | 2 ms | 384 KB |
subtask_1_11.txt | AC | 247 ms | 384 KB |
subtask_1_12.txt | AC | 233 ms | 384 KB |
subtask_1_13.txt | AC | 247 ms | 384 KB |
subtask_1_14.txt | AC | 342 ms | 384 KB |
subtask_1_15.txt | AC | 290 ms | 384 KB |
subtask_1_16.txt | AC | 240 ms | 384 KB |
subtask_1_17.txt | AC | 241 ms | 384 KB |
subtask_1_18.txt | AC | 233 ms | 384 KB |
subtask_1_19.txt | AC | 245 ms | 384 KB |
subtask_1_20.txt | AC | 246 ms | 384 KB |
subtask_1_21.txt | AC | 336 ms | 384 KB |
subtask_1_22.txt | AC | 336 ms | 384 KB |
subtask_1_23.txt | AC | 344 ms | 384 KB |
subtask_1_24.txt | AC | 345 ms | 384 KB |
subtask_1_25.txt | AC | 344 ms | 384 KB |
subtask_1_26.txt | AC | 2 ms | 384 KB |
subtask_1_27.txt | AC | 3 ms | 384 KB |
subtask_1_28.txt | AC | 15 ms | 384 KB |
subtask_1_29.txt | AC | 57 ms | 384 KB |
subtask_1_30.txt | AC | 224 ms | 384 KB |
subtask_1_31.txt | AC | 1 ms | 384 KB |
subtask_1_32.txt | AC | 2 ms | 384 KB |
subtask_1_33.txt | AC | 4 ms | 384 KB |
subtask_1_34.txt | AC | 16 ms | 384 KB |
subtask_1_35.txt | AC | 59 ms | 384 KB |
subtask_1_36.txt | AC | 228 ms | 384 KB |
subtask_1_37.txt | AC | 2 ms | 384 KB |
subtask_1_38.txt | AC | 4 ms | 384 KB |
subtask_1_39.txt | AC | 15 ms | 384 KB |
subtask_1_40.txt | AC | 58 ms | 384 KB |
subtask_1_41.txt | AC | 225 ms | 384 KB |
subtask_1_42.txt | AC | 225 ms | 384 KB |
subtask_1_43.txt | AC | 229 ms | 384 KB |
subtask_1_44.txt | AC | 229 ms | 384 KB |
subtask_1_45.txt | AC | 228 ms | 384 KB |
subtask_1_46.txt | AC | 230 ms | 384 KB |