Adding some more judges, here and there.
[and.git] / NEERC / exclusive / tests / ExclusiveTestsGen.java
blobf2d941bd31e6cdaff43042881e80dafa4b511fa6
1 import java.io.*;
2 import java.util.*;
4 public class ExclusiveTestsGen implements Runnable {
5 private static final int MAX_N = 100;
7 public static void main(String[] args) {
8 testNum = 6;
9 new Thread(new ExclusiveTestsGen()).start();
12 PrintWriter out;
14 Random r = new Random(734298743);
16 static int testNum;
18 static String getName(int i) {
19 return i / 10 + "" + i % 10;
22 void open() {
23 try {
24 System.out.println("Generating test " + testNum);
25 out = new PrintWriter(getName(testNum));
26 } catch (FileNotFoundException e) {
27 e.printStackTrace();
28 System.exit(-1);
32 void close() {
33 out.close();
34 testNum++;
37 private void randomTest() {
38 open();
39 int n = 1 + r.nextInt(100);
40 out.println(n);
41 for (int i = 0; i < n; i++) {
42 int u = r.nextInt('Z' - 'L' + 1);
43 int v = r.nextInt('Z' - 'L' + 1);
44 while (u == v) {
45 v = r.nextInt('Z' - 'L' + 1);
47 out.println(((char) ('L' + u)) + " " + ((char) ('L' + v)));
49 close();
52 private void randomSmallTest() {
53 open();
54 int n = 1 + r.nextInt(15);
55 out.println(n);
56 for (int i = 0; i < n; i++) {
57 int u = r.nextInt('S' - 'L' + 1);
58 int v = r.nextInt('S' - 'L' + 1);
59 while (u == v) {
60 v = r.nextInt('S' - 'L' + 1);
62 out.println(((char) ('L' + u)) + " " + ((char) ('L' + v)));
64 close();
67 private void fullTest(int size) {
68 open();
69 int n = Math.min(MAX_N, size * (size - 1) / 2);
70 out.println(n);
71 outer:
72 for (int i = 0; i < size; i++) {
73 for (int j = i + 1; j < size; j++) {
74 out.println(((char) ('L' + i)) + " " + ((char) ('L' + j)));
75 n--;
76 if (n == 0) {
77 break outer;
81 close();
84 private void extendedFullTest(int size, int n) {
85 open();
86 out.println(n);
87 outer:
88 for (int i = 0; i < size; i++) {
89 for (int j = i + 1; j < size; j++) {
90 out.println(((char) ('L' + i)) + " " + ((char) ('L' + j)));
91 n--;
92 if (n == 0) {
93 break outer;
97 for (int i = 0; i < n; i++) {
98 int u = r.nextInt('S' - 'L' + 1);
99 int v = r.nextInt('S' - 'L' + 1);
100 while (u == v) {
101 v = r.nextInt('S' - 'L' + 1);
103 out.println(((char) ('L' + u)) + " " + ((char) ('L' + v)));
105 close();
108 public void generateTests() {
109 for (int i = 0; i < 10; i++) {
110 randomSmallTest();
112 for (int i = 4; i <= 15; i++) {
113 fullTest(i);
115 for (int i = 4; i <= 14; i++) {
116 extendedFullTest(i, MAX_N);
118 for (int i = 0; i < 22; i++) {
119 randomTest();
123 public void run() {
124 try {
125 generateTests();
126 } catch (Throwable e) {
127 e.printStackTrace();
128 System.exit(-1);