Submission #5555937
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.io.BufferedWriter; import java.util.Collection; import java.util.InputMismatchException; import java.io.IOException; import java.util.stream.Collectors; import java.util.Stack; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; import java.util.Vector; import java.io.Writer; import java.io.OutputStreamWriter; import java.util.Comparator; import java.io.InputStream; /** * Built using CHelper plug-in * Actual solution is at the top */ public class Main { public static void main(String[] args) { InputStream inputStream = System.in; OutputStream outputStream = System.out; InputReader in = new InputReader(inputStream); OutputWriter out = new OutputWriter(outputStream); EConnected solver = new EConnected(); solver.solve(1, in, out); out.close(); } static class EConnected { public void solve(int testNumber, InputReader in, OutputWriter out) { int r = in.readInt(); int c = in.readInt(); int n = in.readInt(); List<IntIntPair> list1 = new ArrayList<>(); List<IntIntPair> list2 = new ArrayList<>(); List<IntIntPair> list3 = new ArrayList<>(); List<IntIntPair> list4 = new ArrayList<>(); out: for (int i = 0; i < n; i++) { int[][] a = in.readIntTable(2, 2); for (int j = 0; j < 2; j++) { if (a[j][0] != 0 && a[j][0] != r && a[j][1] != 0 && a[j][1] != c) continue out; } for (int j = 0; j < 2; j++) { if (a[j][0] > 0 && a[j][1] == 0) list1.add(new IntIntPair(a[j][0], i)); if (a[j][0] == r && a[j][1] > 0) list2.add(new IntIntPair(a[j][1], i)); if (a[j][0] < r && a[j][1] == c) list3.add(new IntIntPair(a[j][0], i)); if (a[j][0] == 0 && a[j][1] < c) list4.add(new IntIntPair(a[j][1], i)); } } list1.sort(Comparator.naturalOrder()); list2.sort(Comparator.naturalOrder()); list3.sort(Comparator.reverseOrder()); list4.sort(Comparator.reverseOrder()); List<Integer> all = Stream.of(list1, list2, list3, list4) .flatMap(Collection::stream) .map(p -> p.second) .collect(Collectors.toList()); Stack<Integer> stack = new Stack<>(); for (int x : all) { if (stack.empty() || x != stack.peek()) { stack.push(x); } else { stack.pop(); } } out.printLine(stack.size() == 0 ? "YES" : "NO"); } } static class InputReader { private InputStream stream; private byte[] buf = new byte[1024]; private int curChar; private int numChars; private InputReader.SpaceCharFilter filter; public InputReader(InputStream stream) { this.stream = stream; } public int[][] readIntTable(int rowCount, int columnCount) { int[][] table = new int[rowCount][]; for (int i = 0; i < rowCount; i++) { table[i] = readIntArray(columnCount); } return table; } public int[] readIntArray(int size) { int[] array = new int[size]; for (int i = 0; i < size; i++) { array[i] = readInt(); } return array; } public int read() { if (numChars == -1) { throw new InputMismatchException(); } if (curChar >= numChars) { curChar = 0; try { numChars = stream.read(buf); } catch (IOException e) { throw new InputMismatchException(); } if (numChars <= 0) { return -1; } } return buf[curChar++]; } public int readInt() { int c = read(); while (isSpaceChar(c)) { c = read(); } int sgn = 1; if (c == '-') { sgn = -1; c = read(); } int res = 0; do { if (c < '0' || c > '9') { throw new InputMismatchException(); } res *= 10; res += c - '0'; c = read(); } while (!isSpaceChar(c)); return res * sgn; } public boolean isSpaceChar(int c) { if (filter != null) { return filter.isSpaceChar(c); } return isWhitespace(c); } public static boolean isWhitespace(int c) { return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1; } public interface SpaceCharFilter { public boolean isSpaceChar(int ch); } } static class IntIntPair implements Comparable<IntIntPair> { public final int first; public final int second; public IntIntPair(int first, int second) { this.first = first; this.second = second; } public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } IntIntPair pair = (IntIntPair) o; return first == pair.first && second == pair.second; } public int hashCode() { int result = first; result = 31 * result + second; return result; } public String toString() { return "(" + first + "," + second + ")"; } public int compareTo(IntIntPair o) { int value = Integer.compare(first, o.first); if (value != 0) { return value; } return Integer.compare(second, o.second); } } static class OutputWriter { private final PrintWriter writer; public OutputWriter(OutputStream outputStream) { writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream))); } public OutputWriter(Writer writer) { this.writer = new PrintWriter(writer); } public void print(Object... objects) { for (int i = 0; i < objects.length; i++) { if (i != 0) { writer.print(' '); } writer.print(objects[i]); } } public void printLine(Object... objects) { print(objects); writer.println(); } public void close() { writer.close(); } } }
Submission Info
Submission Time | |
---|---|
Task | E - Connected? |
User | amotoma3 |
Language | Java8 (OpenJDK 1.8.0) |
Score | 700 |
Code Size | 7420 Byte |
Status | AC |
Exec Time | 672 ms |
Memory | 49300 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 700 / 700 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | s1.txt, s2.txt, s3.txt, s4.txt |
All | 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 43.txt, 44.txt, 45.txt, 46.txt, s1.txt, s2.txt, s3.txt, s4.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
01.txt | AC | 522 ms | 46244 KB |
02.txt | AC | 453 ms | 41732 KB |
03.txt | AC | 442 ms | 43484 KB |
04.txt | AC | 357 ms | 35368 KB |
05.txt | AC | 435 ms | 45120 KB |
06.txt | AC | 672 ms | 49300 KB |
07.txt | AC | 281 ms | 32788 KB |
08.txt | AC | 447 ms | 47092 KB |
09.txt | AC | 387 ms | 36720 KB |
10.txt | AC | 521 ms | 46668 KB |
11.txt | AC | 483 ms | 48048 KB |
12.txt | AC | 240 ms | 32280 KB |
13.txt | AC | 296 ms | 40272 KB |
14.txt | AC | 408 ms | 42708 KB |
15.txt | AC | 462 ms | 42656 KB |
16.txt | AC | 336 ms | 34708 KB |
17.txt | AC | 265 ms | 34556 KB |
18.txt | AC | 302 ms | 36012 KB |
19.txt | AC | 374 ms | 41240 KB |
20.txt | AC | 553 ms | 43792 KB |
21.txt | AC | 439 ms | 40560 KB |
22.txt | AC | 434 ms | 45004 KB |
23.txt | AC | 552 ms | 47364 KB |
24.txt | AC | 575 ms | 47004 KB |
25.txt | AC | 587 ms | 44108 KB |
26.txt | AC | 600 ms | 48476 KB |
27.txt | AC | 534 ms | 43580 KB |
28.txt | AC | 577 ms | 44076 KB |
29.txt | AC | 546 ms | 46300 KB |
30.txt | AC | 543 ms | 45544 KB |
43.txt | AC | 164 ms | 23760 KB |
44.txt | AC | 161 ms | 24144 KB |
45.txt | AC | 220 ms | 26196 KB |
46.txt | AC | 159 ms | 26580 KB |
s1.txt | AC | 160 ms | 23892 KB |
s2.txt | AC | 164 ms | 26452 KB |
s3.txt | AC | 161 ms | 24532 KB |
s4.txt | AC | 153 ms | 24012 KB |