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
AC × 4
AC × 54
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