Submission #1543059
Source Code Expand
#include <cstdio> #include <cstring> #include <vector> #include <algorithm> using namespace std; char a[2001]; char b[2001]; int l[2000]; int r[2000]; int calc(vector<pair<int, int> > &v) { int ans = 1e9, m = 0, i; if (v.size() == 0) return 0; for (i = 0; i < v.size(); i++) { ans = min(ans, v[i].first + m); m = max(m, v[i].second); } ans = min(ans, m); return ans * 2; } int main() { int n, ans = 1e9, i, j; scanf("%s", a); scanf("%s", b); n = strlen(a); for (i = 0; i < n; i++) { if (b[i] == '1') break; } if (i == n) { int ans = 0; for (i = 0; i < n; i++) { if (a[i] == '1') ans = -1; } printf("%d\n", ans); return 0; } for (i = 1; i < n; i++) { if (b[i] == '1') { l[i] = 0; } else { l[i] = l[i - 1] + 1; } } if (b[0] == '0') { l[0] = l[n - 1] + 1; for (i = 1; i < n; i++) { if (b[i] == '1') break; l[i] = l[i - 1] + 1; } } for (i = n - 2; i >= 0; i--) { if (b[i] == '1') { r[i] = 0; } else { r[i] = r[i + 1] + 1; } } if (b[n - 1] == '0') { r[n - 1] = r[0] + 1; for (i = n - 2; i >= 0; i--) { if (b[i] == '1') break; r[i] = r[i + 1] + 1; } } for (i = 0; i < n; i++) { int c = i; vector <pair<int, int> > v; for (j = 0; j < n; j++) { int x = (j + i) % n; if (b[j] != a[x]) { c++; if (b[j] == '0' && l[x] > i) v.push_back(make_pair(l[j], r[x])); } } sort(v.begin(), v.end()); reverse(v.begin(), v.end()); c += calc(v); ans = min(ans, c); } for (i = 0; i < n; i++) { int c = i; vector <pair<int, int> > v; for (j = 0; j < n; j++) { int x = (j - i + n) % n; if (b[j] != a[x]) { c++; if (b[j] == '0' && r[x] > i) v.push_back(make_pair(l[x], r[j])); } } sort(v.begin(), v.end()); reverse(v.begin(), v.end()); c += calc(v); ans = min(ans, c); } printf("%d\n", ans); return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - Shift and Flip |
User | kawatea |
Language | C++14 (GCC 5.4.1) |
Score | 1000 |
Code Size | 2741 Byte |
Status | AC |
Exec Time | 117 ms |
Memory | 256 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:31:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%s", a); ^ ./Main.cpp:32:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] 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 | 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 | 27 ms | 256 KB |
subtask_1_06.txt | AC | 1 ms | 256 KB |
subtask_1_07.txt | AC | 27 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 | 1 ms | 256 KB |
subtask_1_11.txt | AC | 93 ms | 256 KB |
subtask_1_12.txt | AC | 84 ms | 256 KB |
subtask_1_13.txt | AC | 93 ms | 256 KB |
subtask_1_14.txt | AC | 90 ms | 256 KB |
subtask_1_15.txt | AC | 75 ms | 256 KB |
subtask_1_16.txt | AC | 57 ms | 256 KB |
subtask_1_17.txt | AC | 55 ms | 256 KB |
subtask_1_18.txt | AC | 51 ms | 256 KB |
subtask_1_19.txt | AC | 58 ms | 256 KB |
subtask_1_20.txt | AC | 66 ms | 256 KB |
subtask_1_21.txt | AC | 75 ms | 256 KB |
subtask_1_22.txt | AC | 75 ms | 256 KB |
subtask_1_23.txt | AC | 117 ms | 256 KB |
subtask_1_24.txt | AC | 116 ms | 256 KB |
subtask_1_25.txt | AC | 116 ms | 256 KB |
subtask_1_26.txt | AC | 1 ms | 256 KB |
subtask_1_27.txt | AC | 2 ms | 256 KB |
subtask_1_28.txt | AC | 4 ms | 256 KB |
subtask_1_29.txt | AC | 16 ms | 256 KB |
subtask_1_30.txt | AC | 61 ms | 256 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 | 5 ms | 256 KB |
subtask_1_35.txt | AC | 16 ms | 256 KB |
subtask_1_36.txt | AC | 64 ms | 256 KB |
subtask_1_37.txt | AC | 1 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 | 17 ms | 256 KB |
subtask_1_41.txt | AC | 60 ms | 256 KB |
subtask_1_42.txt | AC | 59 ms | 256 KB |
subtask_1_43.txt | AC | 60 ms | 256 KB |
subtask_1_44.txt | AC | 66 ms | 256 KB |
subtask_1_45.txt | AC | 64 ms | 256 KB |
subtask_1_46.txt | AC | 65 ms | 256 KB |