CSES - KILO 2016 3/5 - Results
Submission details
Task:XOR
Sender:PILIPOJAT!!
Submission time:2016-09-20 18:57:24 +0300
Language:Java
Status:READY
Result:
Test results
testverdicttime
#10.10 sdetails
#20.10 sdetails
#30.10 sdetails
#40.10 sdetails
#50.11 sdetails
#60.12 sdetails
#70.10 sdetails
#80.10 sdetails
#90.11 sdetails
#100.10 sdetails
#11--details
#12--details
#13--details
#14--details
#15--details
#16--details
#17--details
#18--details
#19--details
#20--details
#21--details
#22--details
#23--details
#24--details
#25--details
#26--details
#27--details
#28--details
#29--details
#30--details
#310.10 sdetails
#320.09 sdetails

Code

    
    import java.util.*;
import java.io.*;

public class Main {
    
    private static long sum = 0;
    private static List<Long> shit = new ArrayList<Long>();

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        IO io = new IO();
        List<Long> data = new ArrayList<Long>();
        int nums = io.nextInt();
        StringBuilder output = new StringBuilder();
        for(int i = 0; i < nums; i++) {
            int opcode = io.nextInt();
            int parameter = io.nextInt();
            if(opcode == 1) {
                add(parameter, data);
            } else {
                output.append(check(parameter, data));
            }
        }
        System.out.println(output.toString().substring(0, output.length() - 1));
    }
    
    public static void add(long parameter, List<Long> data) {
        data.add(parameter);
        if(sum == 0) {
            sum = parameter;
        } else {
            sum ^= parameter;
        }
        if(sum != parameter) {
            data.add(sum);
        }
    }
    
    public static String check(long parameter, List<Long> data) {
        if(parameter == 0) {
            return "NO\n";
        }
        for(Long i : data) {
            if(data.contains(i ^ parameter)) {
                data.add(parameter);
                return "YES\n";
            }
        }
        return "NO\n";
    }
    
    private static 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

Verdict:

input
59
2 549796
1 797427
2 8267
2 94241
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...

Test 2

Verdict:

input
60
2 189273
2 88019
2 110069
1 611607
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...

Test 3

Verdict:

input
86
1 811855
1 110105
2 569085
1 805175
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...

Test 4

Verdict:

input
79
2 204680
2 479640
2 21734
1 822295
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...

Test 5

Verdict:

input
54
2 393529
2 508737
2 279234
1 610723
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...

Test 6

Verdict:

input
76
1 40087
1 746813
1 120910
2 1048513
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...

Test 7

Verdict:

input
73
1 96148
1 881120
1 414495
1 814692
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...

Test 8

Verdict:

input
93
2 458578
1 907441
2 406032
2 72125
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...

Test 9

Verdict:

input
66
1 256689
1 656847
1 204470
1 706678
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...

Test 10

Verdict:

input
90
1 806402
2 212552
2 588349
2 437562
...

correct output
NO
NO
NO
NO
NO
...

user output
NO
NO
NO
NO
NO
...

Test 11

Verdict:

input
500000
1 87911
1 254464
2 936765
2 177725
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 12

Verdict:

input
500000
2 580798
2 711232
1 517084
1 706145
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 13

Verdict:

input
500000
1 890696
1 736663
1 309693
1 877748
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 14

Verdict:

input
500000
2 422535
2 915569
1 799087
1 640406
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 15

Verdict:

input
500000
1 173418
2 945329
1 54964
2 617017
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 16

Verdict:

input
500000
1 193460
2 476498
2 117697
1 176455
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 17

Verdict:

input
500000
2 88645
2 524394
1 545883
2 906204
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 18

Verdict:

input
500000
1 349059
2 820258
1 666916
1 821504
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 19

Verdict:

input
500000
1 55427
1 389186
2 340527
1 451535
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 20

Verdict:

input
500000
2 186
2 572852
2 279886
1 559531
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 21

Verdict:

input
500000
1 759956
2 946637
2 781536
1 211151
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 22

Verdict:

input
500000
2 898884
1 461135
1 129061
2 1011354
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 23

Verdict:

input
500000
1 124677
2 379713
1 1034177
1 152116
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 24

Verdict:

input
500000
2 280923
1 888416
1 301451
2 877860
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 25

Verdict:

input
500000
2 239639
1 863577
2 825271
2 1030489
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 26

Verdict:

input
500000
2 842792
1 280374
2 528173
2 902772
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 27

Verdict:

input
500000
1 769700
2 786489
2 954187
2 213653
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 28

Verdict:

input
500000
2 45666
2 742846
1 870697
2 824087
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 29

Verdict:

input
500000
2 1010353
1 298819
1 946132
2 1017161
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 30

Verdict:

input
500000
2 195272
1 971250
1 118355
2 361142
...

correct output
NO
NO
NO
NO
NO
...

user output
(empty)

Test 31

Verdict:

input
4
2 0
1 5
1 5
2 0

correct output
NO
YES

user output
NO
NO

Test 32

Verdict:

input
3
2 0
1 0
2 0

correct output
NO
YES

user output
NO
NO