Submission #2010044
Source Code Expand
#define _CRT_SECURE_NO_WARNINGS
#pragma comment(linker, "/stack:16777216")
#include <string>
#include <vector>
#include <map>
#include <list>
#include <iterator>
#include <set>
#include <queue>
#include <iostream>
#include <sstream>
#include <stack>
#include <deque>
#include <cmath>
#include <cstdlib>
#include <cstdio>
#include <cctype>
#include <algorithm>
#include <utility>
#include <time.h>
#include <memory.h>
#include<iomanip>
using namespace std;
#define FOR(i,a,b) for(int i = (a); i < (b); i++)
#define RFOR(i,b,a) for(int i = (b) - 1; i >= (a); i--)
#define ITER(it, a) for(typeof(a.begin()) it = a.begin(); it != a.end(); it++)
#define FILL(a, value) memset(a, value, sizeof(a))
#define SZ(a) (int) a.size()
#define ALL(a) a.begin(),a.end()
#define PB push_back
#define MP make_pair
typedef long long LL;
typedef vector<int> VI;
typedef pair<int, int> PII;
const double PI = acos(-1.0);
const LL INF = 1000 * 1000 * 1000 + 7;
const LL LINF = INF * (LL)INF;
const int MAX = 2 * 1000 + 47;
string a, b;
int A[MAX];
int B[MAX];
vector<PII> P;
int L[MAX];
int R[MAX];
int n;
void ADD(int& key, int val)
{
key += val;
if (key < 0) key += n;
if (key >= n) key -= n;
}
int solve(vector<PII>& P, int sh)
{
sort(ALL(P));
int ans = INF;
int mx = 0;
RFOR(i, SZ(P), 0)
{
int val = P[i].first + 2 * mx + abs(P[i].first - sh);
ans = min(ans, val);
mx = max(mx, P[i].second);
}
ans = min(ans, mx * 2 + sh);
// cout << "sh=" << sh << endl;
// FOR(i,0, SZ(P))
// {
// cout << P[i].first << " " << P[i].second << endl;
// }
// cout<< "ans=" << ans << endl;
if (ans == INF) ans = 0;
return ans;
}
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
ios::sync_with_stdio(false); cin.tie(0);
cin >> a >> b;
n = SZ(a);
int cntA = 0, cntB = 0;
FOR(i, 0, n)
{
A[i] = a[i] - '0';
B[i] = b[i] - '0';
cntA += A[i];
cntB += B[i];
}
if (cntB == 0 && cntA)
{
cout << -1 << endl;
return 0;
}
FOR(i, 0, n)
{
FOR(d, 0, n)
{
int x = 0;
ADD(x, i - d);
if (B[x] == 1)
{
L[i] = d;
break;
}
}
FOR(d, 0, n)
{
int x = 0;
ADD(x, i + d);
if (B[x] == 1)
{
R[i] = d;
break;
}
}
}
// FOR(i,0,n)
// {
// cout << L[i] << " " << R[i] << endl;
// }
int ans = INF;
FOR(i, 0, n)
{
P.clear();
int cnt = 0;
FOR(j, 0, n)
{
int x = 0;
ADD(x, j - i);
cnt += B[x] != A[j];
if (B[x] == 0 && A[j] == 1)
{
P.PB(MP(L[j], R[j]));
}
}
ans = min(ans, solve(P, i) + cnt);
FOR(j, 0, SZ(P))
{
swap(P[j].first, P[j].second);
}
ans = min(ans, solve(P, n - i) + cnt);
}
cout << ans << endl;
}
Submission Info
Submission Time |
|
Task |
D - Shift and Flip |
User |
philologist |
Language |
C++14 (GCC 5.4.1) |
Score |
1000 |
Code Size |
2815 Byte |
Status |
AC |
Exec Time |
241 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 |
2 ms |
256 KB |
sample_02.txt |
AC |
2 ms |
256 KB |
sample_03.txt |
AC |
2 ms |
256 KB |
sample_04.txt |
AC |
2 ms |
256 KB |
subtask_1_01.txt |
AC |
2 ms |
256 KB |
subtask_1_02.txt |
AC |
2 ms |
256 KB |
subtask_1_03.txt |
AC |
2 ms |
256 KB |
subtask_1_04.txt |
AC |
35 ms |
256 KB |
subtask_1_05.txt |
AC |
15 ms |
256 KB |
subtask_1_06.txt |
AC |
2 ms |
256 KB |
subtask_1_07.txt |
AC |
16 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 |
84 ms |
256 KB |
subtask_1_12.txt |
AC |
30 ms |
256 KB |
subtask_1_13.txt |
AC |
87 ms |
256 KB |
subtask_1_14.txt |
AC |
114 ms |
256 KB |
subtask_1_15.txt |
AC |
148 ms |
256 KB |
subtask_1_16.txt |
AC |
190 ms |
256 KB |
subtask_1_17.txt |
AC |
199 ms |
256 KB |
subtask_1_18.txt |
AC |
234 ms |
256 KB |
subtask_1_19.txt |
AC |
241 ms |
256 KB |
subtask_1_20.txt |
AC |
217 ms |
256 KB |
subtask_1_21.txt |
AC |
82 ms |
256 KB |
subtask_1_22.txt |
AC |
82 ms |
256 KB |
subtask_1_23.txt |
AC |
163 ms |
384 KB |
subtask_1_24.txt |
AC |
164 ms |
384 KB |
subtask_1_25.txt |
AC |
164 ms |
384 KB |
subtask_1_26.txt |
AC |
1 ms |
256 KB |
subtask_1_27.txt |
AC |
2 ms |
256 KB |
subtask_1_28.txt |
AC |
3 ms |
256 KB |
subtask_1_29.txt |
AC |
12 ms |
256 KB |
subtask_1_30.txt |
AC |
56 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 |
4 ms |
256 KB |
subtask_1_35.txt |
AC |
19 ms |
256 KB |
subtask_1_36.txt |
AC |
80 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 |
21 ms |
256 KB |
subtask_1_41.txt |
AC |
81 ms |
256 KB |
subtask_1_42.txt |
AC |
75 ms |
256 KB |
subtask_1_43.txt |
AC |
83 ms |
256 KB |
subtask_1_44.txt |
AC |
92 ms |
256 KB |
subtask_1_45.txt |
AC |
83 ms |
256 KB |
subtask_1_46.txt |
AC |
83 ms |
384 KB |