Submission #1543965
Source Code Expand
import java.io.OutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.util.Arrays; import java.io.BufferedWriter; import java.util.InputMismatchException; import java.io.IOException; import java.util.ArrayList; import java.io.Writer; import java.io.OutputStreamWriter; import java.util.Comparator; import java.util.NoSuchElementException; import java.util.Collections; import java.io.InputStream; /** * Built using CHelper plug-in * Actual solution is at the top * * @author ogiekako */ public class Main { public static void main(String[] args) { InputStream inputStream = System.in; OutputStream outputStream = System.out; MyScanner in = new MyScanner(inputStream); MyPrintWriter out = new MyPrintWriter(outputStream); TaskD solver = new TaskD(); solver.solve(1, in, out); out.close(); } static class TaskD { public void solve(int testNumber, MyScanner in, MyPrintWriter out) { String A = in.next(), B = in.next(); int n = A.length(); int m = 0; for (char b : B.toCharArray()) { if (b == '1') m++; } if (m == 0) { out.println(A.equals(B) ? 0 : -1); return; } B = B + B + B + B + B; int[] bs = new int[m * 5]; m = 0; for (int i = 0; i < B.length(); i++) { if (B.charAt(i) == '1') { bs[m++] = i; } } int res = Integer.MAX_VALUE; for (int x = -n; x <= n; x++) { ArrayList<E> es = new ArrayList<E>(); int add = 0; for (int i = 0; i < n; i++) { if (A.charAt(i) == '1' && B.charAt(2 * n + i + x) == '0') { add++; E e = new E(); int k = Arrays.binarySearch(bs, 2 * n + i + x); int l = -k - 2; int r = -k - 1; e.l = 2 * n + i - bs[l]; e.r = bs[r] - (2 * n + i); if (bs[l] < Math.min(2 * n + i, 2 * n + i + x) && Math.max(2 * n + i, 2 * n + i + x) < bs[r]) { es.add(e); } } else if (A.charAt(i) == '0' && B.charAt(2 * n + i + x) == '1') { add++; } } E zero = new E(); zero.l = 0; zero.r = 0; es.add(zero); Collections.sort(es, Comparator.reverseOrder()); int r = 0; for (E e : es) { int l = e.l; res = Math.min(res, add + Math.min(2 * l + r + Math.abs(r - x), 2 * r + l + Math.abs(l + x))); r = Math.max(r, e.r); } // Debug.debug(res, es, x); } out.println(res); } class E implements Comparable<E> { int l; int r; public int compareTo(E o) { return l - o.l; } public String toString() { return l + " " + r; } } } static class MyPrintWriter { PrintWriter out; public MyPrintWriter(OutputStream outputStream) { out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream))); } public MyPrintWriter(Writer writer) { out = new PrintWriter(writer); } public void println(int a) { out.println(a); } public void close() { out.close(); } } static class MyScanner { private final InputStream in; private static final int BUFSIZE = 65536; int bufLen; int bufPtr; byte[] buf = new byte[BUFSIZE]; private char[] strBuf = new char[BUFSIZE]; public MyScanner(InputStream in) { this.in = in; } public int read() { if (bufLen == -1) throw new InputMismatchException(); if (bufPtr >= bufLen) { bufPtr = 0; try { bufLen = in.read(buf); } catch (IOException e) { throw new InputMismatchException(); } if (bufLen <= 0) return -1; } return buf[bufPtr++]; } public String next() { int strLen = 0; int c; do { c = read(); if (c == -1) throw new NoSuchElementException(); } while (Character.isWhitespace(c)); do { if (strLen + 1 >= strBuf.length) { char[] tmp = new char[strBuf.length * 2]; System.arraycopy(strBuf, 0, tmp, 0, strBuf.length); strBuf = tmp; } strBuf[strLen++] = (char) c; c = read(); } while (c != -1 && !Character.isWhitespace(c)); return new String(strBuf, 0, strLen); } } }
Submission Info
Submission Time | |
---|---|
Task | D - Shift and Flip |
User | ogiekako |
Language | Java8 (OpenJDK 1.8.0) |
Score | 1000 |
Code Size | 5549 Byte |
Status | AC |
Exec Time | 599 ms |
Memory | 92572 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 | 72 ms | 19668 KB |
sample_02.txt | AC | 71 ms | 18644 KB |
sample_03.txt | AC | 72 ms | 21460 KB |
sample_04.txt | AC | 70 ms | 20308 KB |
subtask_1_01.txt | AC | 70 ms | 19540 KB |
subtask_1_02.txt | AC | 74 ms | 19156 KB |
subtask_1_03.txt | AC | 71 ms | 15956 KB |
subtask_1_04.txt | AC | 73 ms | 21204 KB |
subtask_1_05.txt | AC | 127 ms | 21296 KB |
subtask_1_06.txt | AC | 79 ms | 21332 KB |
subtask_1_07.txt | AC | 124 ms | 19524 KB |
subtask_1_08.txt | AC | 72 ms | 20948 KB |
subtask_1_09.txt | AC | 73 ms | 21844 KB |
subtask_1_10.txt | AC | 79 ms | 19412 KB |
subtask_1_11.txt | AC | 382 ms | 41080 KB |
subtask_1_12.txt | AC | 282 ms | 26376 KB |
subtask_1_13.txt | AC | 384 ms | 41464 KB |
subtask_1_14.txt | AC | 564 ms | 65888 KB |
subtask_1_15.txt | AC | 403 ms | 59208 KB |
subtask_1_16.txt | AC | 459 ms | 51232 KB |
subtask_1_17.txt | AC | 537 ms | 49804 KB |
subtask_1_18.txt | AC | 582 ms | 48880 KB |
subtask_1_19.txt | AC | 479 ms | 49008 KB |
subtask_1_20.txt | AC | 449 ms | 50668 KB |
subtask_1_21.txt | AC | 390 ms | 63488 KB |
subtask_1_22.txt | AC | 599 ms | 66756 KB |
subtask_1_23.txt | AC | 491 ms | 91380 KB |
subtask_1_24.txt | AC | 465 ms | 91076 KB |
subtask_1_25.txt | AC | 520 ms | 92572 KB |
subtask_1_26.txt | AC | 84 ms | 19540 KB |
subtask_1_27.txt | AC | 97 ms | 21588 KB |
subtask_1_28.txt | AC | 133 ms | 24416 KB |
subtask_1_29.txt | AC | 232 ms | 30520 KB |
subtask_1_30.txt | AC | 494 ms | 52800 KB |
subtask_1_31.txt | AC | 73 ms | 19668 KB |
subtask_1_32.txt | AC | 82 ms | 17108 KB |
subtask_1_33.txt | AC | 101 ms | 19668 KB |
subtask_1_34.txt | AC | 138 ms | 27740 KB |
subtask_1_35.txt | AC | 248 ms | 34608 KB |
subtask_1_36.txt | AC | 527 ms | 51444 KB |
subtask_1_37.txt | AC | 92 ms | 18260 KB |
subtask_1_38.txt | AC | 101 ms | 20308 KB |
subtask_1_39.txt | AC | 141 ms | 25664 KB |
subtask_1_40.txt | AC | 243 ms | 35756 KB |
subtask_1_41.txt | AC | 487 ms | 48092 KB |
subtask_1_42.txt | AC | 495 ms | 53000 KB |
subtask_1_43.txt | AC | 402 ms | 45260 KB |
subtask_1_44.txt | AC | 479 ms | 46408 KB |
subtask_1_45.txt | AC | 505 ms | 50568 KB |
subtask_1_46.txt | AC | 400 ms | 50028 KB |