Submission details
Task:Simplified Sudoku
Sender:thierry
Submission time:2018-09-13 18:52:39 +0300
Language:Java
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.15 sdetails
#2ACCEPTED0.14 sdetails
#3ACCEPTED0.15 sdetails
#4ACCEPTED0.14 sdetails
#5ACCEPTED0.15 sdetails
#6ACCEPTED0.14 sdetails
#7ACCEPTED0.19 sdetails
#8ACCEPTED0.18 sdetails
#9ACCEPTED0.20 sdetails
#10ACCEPTED0.18 sdetails

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;

public class Viikko2e {

    static class FastReader {

        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }
    }

    public static void main(String[] args) {

        FastReader s = new FastReader();
        int n = s.nextInt();

        int[][] sudoku = new int[n][n];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                int a = s.nextInt();
                sudoku[i][j] = a;
            }
        }

        if (tarkista(n, sudoku)) {
            System.out.println("YES");
        } else {
            System.out.println("NO");
        }

    }

    private static boolean tarkista(int n, int[][] sudoku) {
        Set<Integer> setti = new HashSet<>();
        
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                int a = sudoku[i][j];
                if (setti.contains(a)) {
                    return false;
                }
                setti.add(a);
            }
            setti.clear();
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                int a = sudoku[j][i];
                if (setti.contains(a)) {
                    return false;
                }
                setti.add(a);
            }
            setti.clear();
        }
        return true;
    }
}

Test details

Test 1

Verdict: ACCEPTED

input
1
1

correct output
YES

user output
YES

Test 2

Verdict: ACCEPTED

input
2
1 2
2 1

correct output
YES

user output
YES

Test 3

Verdict: ACCEPTED

input
2
1 1
1 1

correct output
NO

user output
NO

Test 4

Verdict: ACCEPTED

input
2
2 2
2 2

correct output
NO

user output
NO

Test 5

Verdict: ACCEPTED

input
2
1 2
1 2

correct output
NO

user output
NO

Test 6

Verdict: ACCEPTED

input
2
1 2
1 1

correct output
NO

user output
NO

Test 7

Verdict: ACCEPTED

input
100
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

correct output
NO

user output
NO

Test 8

Verdict: ACCEPTED

input
100
32 84 70 64 50 82 33 91 77 56 ...

correct output
NO

user output
NO

Test 9

Verdict: ACCEPTED

input
100
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

correct output
YES

user output
YES

Test 10

Verdict: ACCEPTED

input
100
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

correct output
NO

user output
NO