Submission #2525372
Source Code Expand
import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.Arrays; import java.util.InputMismatchException; import java.util.NoSuchElementException; public class Main { static PrintWriter out; static InputReader ir; static boolean debug = false; static void solve() { char[] s = ir.next().toCharArray(); char[] t = ir.next().toCharArray(); int[] sct = new int[s.length + 1]; int[] tct = new int[t.length + 1]; for (int i = 0; i < s.length; i++) { sct[i + 1] += sct[i]; if (s[i] == 'A') sct[i + 1]++; } for (int i = 0; i < t.length; i++) { tct[i + 1] += tct[i]; if (t[i] == 'A') tct[i + 1]++; } int q = ir.nextInt(); while (q-- > 0) { int a = ir.nextInt(); int b = ir.nextInt(); int c = ir.nextInt(); int d = ir.nextInt(); int sa = sct[b] - sct[a - 1]; int sb = b - a + 1 - sa; int ta = tct[d] - tct[c - 1]; int tb = d - c + 1 - ta; sa %= 3; sb %= 3; ta %= 3; tb %= 3; while (sa >= 2 || sb >= 2) { sb += sa / 2; sa %= 2; sa += sb / 2; sb %= 2; } while (ta >= 2 || tb >= 2) { tb += ta / 2; ta %= 2; ta += tb / 2; tb %= 2; } if (sa == 1 && sb == 1) sa = sb = 0; if (ta == 1 && tb == 1) ta = tb = 0; out.println(sa == ta && sb == tb ? "YES" : "NO"); } } public static void main(String[] args) throws Exception { ir = new InputReader(System.in); out = new PrintWriter(System.out); solve(); out.flush(); } static class InputReader { private InputStream in; private byte[] buffer = new byte[1024]; private int curbuf; private int lenbuf; public InputReader(InputStream in) { this.in = in; this.curbuf = this.lenbuf = 0; } public boolean hasNextByte() { if (curbuf >= lenbuf) { curbuf = 0; try { lenbuf = in.read(buffer); } catch (IOException e) { throw new InputMismatchException(); } if (lenbuf <= 0) return false; } return true; } private int readByte() { if (hasNextByte()) return buffer[curbuf++]; else return -1; } private boolean isSpaceChar(int c) { return !(c >= 33 && c <= 126); } private void skip() { while (hasNextByte() && isSpaceChar(buffer[curbuf])) curbuf++; } public boolean hasNext() { skip(); return hasNextByte(); } public String next() { if (!hasNext()) throw new NoSuchElementException(); StringBuilder sb = new StringBuilder(); int b = readByte(); while (!isSpaceChar(b)) { sb.appendCodePoint(b); b = readByte(); } return sb.toString(); } public int nextInt() { if (!hasNext()) throw new NoSuchElementException(); int c = readByte(); while (isSpaceChar(c)) c = readByte(); boolean minus = false; if (c == '-') { minus = true; c = readByte(); } int res = 0; do { if (c < '0' || c > '9') throw new InputMismatchException(); res = res * 10 + c - '0'; c = readByte(); } while (!isSpaceChar(c)); return (minus) ? -res : res; } public long nextLong() { if (!hasNext()) throw new NoSuchElementException(); int c = readByte(); while (isSpaceChar(c)) c = readByte(); boolean minus = false; if (c == '-') { minus = true; c = readByte(); } long res = 0; do { if (c < '0' || c > '9') throw new InputMismatchException(); res = res * 10 + c - '0'; c = readByte(); } while (!isSpaceChar(c)); return (minus) ? -res : res; } public double nextDouble() { return Double.parseDouble(next()); } public int[] nextIntArray(int n) { int[] a = new int[n]; for (int i = 0; i < n; i++) a[i] = nextInt(); return a; } public long[] nextLongArray(int n) { long[] a = new long[n]; for (int i = 0; i < n; i++) a[i] = nextLong(); return a; } public char[][] nextCharMap(int n, int m) { char[][] map = new char[n][m]; for (int i = 0; i < n; i++) map[i] = next().toCharArray(); return map; } } static void tr(Object... o) { if (debug) out.println(Arrays.deepToString(o)); } }
Submission Info
Submission Time | |
---|---|
Task | E - TrBBnsformBBtion |
User | holeguma |
Language | Java8 (OpenJDK 1.8.0) |
Score | 600 |
Code Size | 4321 Byte |
Status | AC |
Exec Time | 280 ms |
Memory | 29944 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 600 / 600 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 0_000.txt, 0_001.txt |
All | 0_000.txt, 0_001.txt, bound_0.txt, bound_1.txt, bound_2.txt, bound_3.txt, min.txt, rnd_10000_10.txt, rnd_10000_10000.txt, rnd_10000_2.txt, rnd_10_10.txt, rnd_10_10000.txt, rnd_10_2.txt, rnd_2_10.txt, rnd_2_10000.txt, rnd_2_2.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
0_000.txt | AC | 69 ms | 19028 KB |
0_001.txt | AC | 70 ms | 19412 KB |
bound_0.txt | AC | 166 ms | 24116 KB |
bound_1.txt | AC | 227 ms | 29944 KB |
bound_2.txt | AC | 198 ms | 27776 KB |
bound_3.txt | AC | 173 ms | 23000 KB |
min.txt | AC | 71 ms | 19796 KB |
rnd_10000_10.txt | AC | 280 ms | 29492 KB |
rnd_10000_10000.txt | AC | 171 ms | 27992 KB |
rnd_10000_2.txt | AC | 175 ms | 24528 KB |
rnd_10_10.txt | AC | 175 ms | 24692 KB |
rnd_10_10000.txt | AC | 213 ms | 29664 KB |
rnd_10_2.txt | AC | 170 ms | 28048 KB |
rnd_2_10.txt | AC | 203 ms | 27240 KB |
rnd_2_10000.txt | AC | 199 ms | 28248 KB |
rnd_2_2.txt | AC | 205 ms | 27060 KB |