Submission #1549295
Source Code Expand
#include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<b;i++) #define rrep(i,a,b) for(int i=a;i>=b;i--) #define fore(i,a) for(auto &i:a) #pragma GCC optimize ("-O3") using namespace std; void _main(); int main() { cin.tie(0); ios::sync_with_stdio(false); _main(); } //--------------------------------------------------------------------------------------------------- /*--------------------------------------------------------------------------------------------------- ∧_∧ ∧_∧ (´<_` ) Welcome to My Coding Space! ( ´_ゝ`) / ⌒i / \ | | / / ̄ ̄ ̄ ̄/ | __(__ニつ/ _/ .| .|____ \/____/ (u ⊃ ---------------------------------------------------------------------------------------------------*/ #define INF INT_MAX/2 string A, B; int N; //--------------------------------------------------------------------------------------------------- int isng() { if (count(B.begin(), B.end(), '1')) return 0; if (count(A.begin(), A.end(), '1')) return 1; return 0; } //--------------------------------------------------------------------------------------------------- int g(vector<pair<int, int>> &v) { sort(v.begin(), v.end(), greater<pair<int, int>>()); int res = INF, rmax = 0; fore(p, v) { res = min(res, p.first + rmax); rmax = max(rmax, p.second); } res = min(res, rmax); return res; } //--------------------------------------------------------------------------------------------------- int pre[2020], post[2020], sm[2020]; int f(int d) { int firs = -1; int last = 0; rep(i, 0, N) { if (firs < 0 && B[i] == '1') firs = i; if (B[i] == '1') last = i; } int p = last; rep(i, 0, N) { pre[i] = p; if (B[i] == '1') p = i; } p = firs; rrep(i, N - 1, 0) { post[i] = p; if (B[i] == '1') p = i; } sm[0] = 0; if (B[0] == '1') sm[0] = 1; rep(i, 1, N) { if (B[i] == '1') sm[i] = sm[i - 1] + 1; else sm[i] = sm[i - 1]; } vector<pair<int, int>> v; int res = 0; rep(i, 0, N) { if (A[i] == B[(i + d) % N]) continue; res++; int a = i, b = (i + d) % N; int ss = -1; if (a <= b) { ss = sm[b]; if (a) ss -= sm[a - 1]; } else { ss = sm[N - 1]; if (a) ss -= sm[a - 1]; ss += sm[b]; } if (ss) continue; int k = pre[i]; int L = i - k; if (L < 0) L += N; int l = post[(i + d) % N]; int R = l - (i + d) % N; if (R < 0) R += N; v.push_back({ L, R }); } res += 2 * g(v) + d; return res; } //--------------------------------------------------------------------------------------------------- int solve() { int ans = INF; rep(d, 0, N * 2) ans = min(ans, f(d)); return ans; } //--------------------------------------------------------------------------------------------------- void _main() { cin >> A >> B; N = A.length(); if (isng()) { printf("-1\n"); return; } int ans = INF; ans = solve(); reverse(A.begin(), A.end()); reverse(B.begin(), B.end()); ans = min(ans, solve()); cout << ans << endl; }
Submission Info
Submission Time | |
---|---|
Task | D - Shift and Flip |
User | hamayanhamayan |
Language | C++14 (GCC 5.4.1) |
Score | 1000 |
Code Size | 3570 Byte |
Status | AC |
Exec Time | 403 ms |
Memory | 384 KB |
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 | 147 ms | 256 KB |
subtask_1_05.txt | AC | 204 ms | 256 KB |
subtask_1_06.txt | AC | 1 ms | 256 KB |
subtask_1_07.txt | AC | 150 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 | 2 ms | 256 KB |
subtask_1_11.txt | AC | 331 ms | 256 KB |
subtask_1_12.txt | AC | 312 ms | 256 KB |
subtask_1_13.txt | AC | 329 ms | 256 KB |
subtask_1_14.txt | AC | 403 ms | 256 KB |
subtask_1_15.txt | AC | 299 ms | 256 KB |
subtask_1_16.txt | AC | 255 ms | 256 KB |
subtask_1_17.txt | AC | 251 ms | 256 KB |
subtask_1_18.txt | AC | 241 ms | 256 KB |
subtask_1_19.txt | AC | 252 ms | 256 KB |
subtask_1_20.txt | AC | 264 ms | 256 KB |
subtask_1_21.txt | AC | 308 ms | 256 KB |
subtask_1_22.txt | AC | 308 ms | 256 KB |
subtask_1_23.txt | AC | 339 ms | 384 KB |
subtask_1_24.txt | AC | 338 ms | 384 KB |
subtask_1_25.txt | AC | 338 ms | 384 KB |
subtask_1_26.txt | AC | 2 ms | 256 KB |
subtask_1_27.txt | AC | 3 ms | 256 KB |
subtask_1_28.txt | AC | 14 ms | 256 KB |
subtask_1_29.txt | AC | 59 ms | 256 KB |
subtask_1_30.txt | AC | 247 ms | 256 KB |
subtask_1_31.txt | AC | 1 ms | 256 KB |
subtask_1_32.txt | AC | 2 ms | 256 KB |
subtask_1_33.txt | AC | 3 ms | 256 KB |
subtask_1_34.txt | AC | 15 ms | 256 KB |
subtask_1_35.txt | AC | 56 ms | 256 KB |
subtask_1_36.txt | AC | 253 ms | 256 KB |
subtask_1_37.txt | AC | 2 ms | 256 KB |
subtask_1_38.txt | AC | 3 ms | 256 KB |
subtask_1_39.txt | AC | 15 ms | 256 KB |
subtask_1_40.txt | AC | 61 ms | 256 KB |
subtask_1_41.txt | AC | 244 ms | 256 KB |
subtask_1_42.txt | AC | 240 ms | 256 KB |
subtask_1_43.txt | AC | 244 ms | 256 KB |
subtask_1_44.txt | AC | 261 ms | 256 KB |
subtask_1_45.txt | AC | 254 ms | 256 KB |
subtask_1_46.txt | AC | 256 ms | 256 KB |