Task: | Ruudukko |
Sender: | Kuha |
Submission time: | 2015-01-29 14:01:09 +0200 |
Language: | Java |
Status: | READY |
Result: | 17 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 17 |
#2 | TIME LIMIT EXCEEDED | 0 |
#3 | TIME LIMIT EXCEEDED | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.03 s | 1 | details |
#2 | ACCEPTED | 0.04 s | 1 | details |
#3 | ACCEPTED | 0.02 s | 1 | details |
#4 | ACCEPTED | 0.03 s | 1 | details |
#5 | ACCEPTED | 0.01 s | 1 | details |
#6 | TIME LIMIT EXCEEDED | -- | 2 | details |
#7 | TIME LIMIT EXCEEDED | -- | 2 | details |
#8 | ACCEPTED | 0.06 s | 2 | details |
#9 | WRONG ANSWER | 0.05 s | 2 | details |
#10 | ACCEPTED | 0.05 s | 2 | details |
#11 | TIME LIMIT EXCEEDED | -- | 3 | details |
#12 | TIME LIMIT EXCEEDED | -- | 3 | details |
#13 | WRONG ANSWER | 0.27 s | 3 | details |
#14 | ACCEPTED | 0.27 s | 3 | details |
#15 | WRONG ANSWER | 0.26 s | 3 | details |
Code
import java.io.BufferedOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;public class Main {private static int n;private static int x = 0;private static int y = 0;private static int[][] dir;public static void main(String[] args) {IO io = new IO();n = io.nextInt();dir = new int[n][n];char[][] arr = new char[n][n];for (int p = 0; p < n; p++) {String s = io.next();for (int o = 0; o < n; o++) {arr[p][o] = s.charAt(o);}}String str = "" + arr[0][0];while (x != n - 1 || y != n - 1) {if (dir[y][x] == 0) {int tempX = x;int tempY = y;next(arr, tempX, tempY, true, 1);} else if (dir[y][x] == 1) {x++;str += arr[y][x];} else {y++;str += arr[y][x];}}io.println(str);io.close();}private static char next (char[][] arr, int tx, int ty, boolean first, int iter) {if (tx == n - 1 && ty == n - 1) {return arr[ty][tx];} else if (tx == n - 1) {dir[ty][tx] = 2;ty++;} else if (ty == n - 1) {dir[ty][tx] = 1;tx++;} else {char cy = arr[ty + 1][tx];char cx = arr[ty][tx + 1];if (cy < cx) {dir[ty][tx] = 2;ty++;} else if (cx < cy) {dir[ty][tx] = 1;tx++;} else {int tempX = tx;int tempY = ty;char nx = next(arr, tempX + 1, tempY, false, iter + 1);char ny = next(arr, tempX, tempY + 1, false, iter + 1);if (ny < nx) {dir[ty][tx] = 2;ty++;} else if (nx < ny) {dir[ty][tx] = 1;tx++;} else {dir[ty][tx] = 1;tx++;}}}return arr[ty][tx];}}class IO extends PrintWriter {private InputStreamReader r;private static final int BUFSIZE = 1 << 15;private char[] buf;private int bufc;private int bufi;private StringBuilder sb;public IO() {super(new BufferedOutputStream(System.out));r = new InputStreamReader(System.in);buf = new char[BUFSIZE];bufc = 0;bufi = 0;sb = new StringBuilder();}private void fillBuf() throws IOException {bufi = 0;bufc = 0;while(bufc == 0) {bufc = r.read(buf, 0, BUFSIZE);if(bufc == -1) {bufc = 0;return;}}}private boolean pumpBuf() throws IOException {if(bufi == bufc) {fillBuf();}return bufc != 0;}private boolean isDelimiter(char c) {return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\f';}private void eatDelimiters() throws IOException {while(true) {if(bufi == bufc) {fillBuf();if(bufc == 0) throw new RuntimeException("IO: Out of input.");}if(!isDelimiter(buf[bufi])) break;++bufi;}}public String next() {try {sb.setLength(0);eatDelimiters();int start = bufi;while(true) {if(bufi == bufc) {sb.append(buf, start, bufi - start);fillBuf();start = 0;if(bufc == 0) break;}if(isDelimiter(buf[bufi])) break;++bufi;}sb.append(buf, start, bufi - start);return sb.toString();} catch(IOException e) {throw new RuntimeException("IO.next: Caught IOException.");}}public int nextInt() {try {int ret = 0;eatDelimiters();boolean positive = true;if(buf[bufi] == '-') {++bufi;if(!pumpBuf()) throw new RuntimeException("IO.nextInt: Invalid int.");positive = false;}boolean first = true;while(true) {if(!pumpBuf()) break;if(isDelimiter(buf[bufi])) {if(first) throw new RuntimeException("IO.nextInt: Invalid int.");break;}first = false;if(buf[bufi] >= '0' && buf[bufi] <= '9') {if(ret < -214748364) throw new RuntimeException("IO.nextInt: Invalid int.");ret *= 10;ret -= (int)(buf[bufi] - '0');if(ret > 0) throw new RuntimeException("IO.nextInt: Invalid int.");} else {throw new RuntimeException("IO.nextInt: Invalid int.");}++bufi;}if(positive) {if(ret == -2147483648) throw new RuntimeException("IO.nextInt: Invalid int.");ret = -ret;}return ret;} catch(IOException e) {throw new RuntimeException("IO.nextInt: Caught IOException.");}}public long nextLong() {try {long ret = 0;eatDelimiters();boolean positive = true;if(buf[bufi] == '-') {++bufi;if(!pumpBuf()) throw new RuntimeException("IO.nextLong: Invalid long.");positive = false;}boolean first = true;while(true) {if(!pumpBuf()) break;if(isDelimiter(buf[bufi])) {if(first) throw new RuntimeException("IO.nextLong: Invalid long.");break;}first = false;if(buf[bufi] >= '0' && buf[bufi] <= '9') {if(ret < -922337203685477580L) throw new RuntimeException("IO.nextLong: Invalid long.");ret *= 10;ret -= (long)(buf[bufi] - '0');if(ret > 0) throw new RuntimeException("IO.nextLong: Invalid long.");} else {throw new RuntimeException("IO.nextLong: Invalid long.");}++bufi;}if(positive) {if(ret == -9223372036854775808L) throw new RuntimeException("IO.nextLong: Invalid long.");ret = -ret;}return ret;} catch(IOException e) {throw new RuntimeException("IO.nextLong: Caught IOException.");}}public double nextDouble() {return Double.parseDouble(next());}}
Test details
Test 1
Group: 1
Verdict: ACCEPTED
input |
---|
5 AAAAA AAAAA AAAAA AAAAA ... |
correct output |
---|
AAAAAAAAB |
user output |
---|
AAAAAAAAB |
Test 2
Group: 1
Verdict: ACCEPTED
input |
---|
5 ABABA BABAB ABABA BABAB ... |
correct output |
---|
ABABABABA |
user output |
---|
ABABABABA |
Test 3
Group: 1
Verdict: ACCEPTED
input |
---|
5 WRYIU TWLKH UJMJC GRDJW ... |
correct output |
---|
WRWJMDJWK |
user output |
---|
WRWJMDJWK |
Test 4
Group: 1
Verdict: ACCEPTED
input |
---|
5 RUEAE ZYHHW KDBPD DXREW ... |
correct output |
---|
RUEAEWDWX |
user output |
---|
RUEAEWDWX |
Test 5
Group: 1
Verdict: ACCEPTED
input |
---|
5 SRGYR MYDOB GNOVM SZOZK ... |
correct output |
---|
SMGNOOLTU |
user output |
---|
SMGNOOLTU |
Test 6
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
100 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA... |
correct output |
---|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA... |
user output |
---|
(empty) |
Test 7
Group: 2
Verdict: TIME LIMIT EXCEEDED
input |
---|
100 ABABABABABABABABABABABABABABAB... |
correct output |
---|
ABABABABABABABABABABABABABABAB... |
user output |
---|
(empty) |
Test 8
Group: 2
Verdict: ACCEPTED
input |
---|
100 FWOVNYKNMMQCNHJGUYPNEDXGVVGONC... |
correct output |
---|
FWDBDECKBHKIACOVUCJGDJOHAYIBHO... |
user output |
---|
FWDBDECKBHKIACOVUCJGDJOHAYIBHO... |
Test 9
Group: 2
Verdict: WRONG ANSWER
input |
---|
100 ETGCJABWKMAAEOQXWFFYMDJBMNKMQK... |
correct output |
---|
EAARGLBRLHCDHHBPABHDAJBEEBHQBE... |
user output |
---|
EAARGLBRLHCDHHBPABHDAJBEEBHQBE... |
Test 10
Group: 2
Verdict: ACCEPTED
input |
---|
100 GNWMLJNHSBAADUFCSGIZMWHZTVDHNR... |
correct output |
---|
GEGOFRDKBNLLEUOPOEQCEFMTKANLNC... |
user output |
---|
GEGOFRDKBNLLEUOPOEQCEFMTKANLNC... |
Test 11
Group: 3
Verdict: TIME LIMIT EXCEEDED
input |
---|
500 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA... |
correct output |
---|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA... |
user output |
---|
(empty) |
Test 12
Group: 3
Verdict: TIME LIMIT EXCEEDED
input |
---|
500 ABABABABABABABABABABABABABABAB... |
correct output |
---|
ABABABABABABABABABABABABABABAB... |
user output |
---|
(empty) |
Test 13
Group: 3
Verdict: WRONG ANSWER
input |
---|
500 HGADXTSFXYIEMDWMFIVQGHTACFUPYI... |
correct output |
---|
HGADEJOGAKPJCRAHTABRSDLAVGBFAG... |
user output |
---|
HGADEJOGAKPJCRAHTABRSDLAVGBFAG... |
Test 14
Group: 3
Verdict: ACCEPTED
input |
---|
500 SBLNMAZESQVGWAPZYHQJMQTNGMEZWS... |
correct output |
---|
SBLCAMDHILGIDRCIDUNMMAHFYCENOS... |
user output |
---|
SBLCAMDHILGIDRCIDUNMMAHFYCENOS... |
Test 15
Group: 3
Verdict: WRONG ANSWER
input |
---|
500 AOXYXRYFWPYWQDPWXQITLHQQUAYZAJ... |
correct output |
---|
AOJLDOAPBGEKSGCNKBUMKAJCCWCOOD... |
user output |
---|
AOJLDOAPBGEKSGCNKBUMKAJCCWCOOD... |