# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
346784 | 2021-01-11T02:39:43 Z | updown1 | Carnival (CEOI14_carnival) | Java 11 | 0 ms | 0 KB |
import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException, FileNotFoundException { // BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(new File("carnival.in")))); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(reader.readLine()); int[] groups = new int[N + 1]; groups[1] = 1; int groupCount = 1; int[] groupMainPoint = new int[N + 1]; groupMainPoint[groupCount] = 1; String startQuery = "1"; int prev = 1; for(int i = 2; i <= N; i++){ startQuery += " " + String.valueOf(i); System.out.println(i + " " + startQuery); System.out.flush(); int newGroups = Integer.parseInt(reader.readLine()); if(newGroups != prev){ groupCount++; groups[i] = groupCount; groupMainPoint[groupCount] = i; } else { int a = 1; int b = groupCount; while(a != b){ int mid = (a + b) / 2; String query = ""; for (int j = a; j <= mid; j++){ query += " " + String.valueOf(groupMainPoint[j]); } query += " " + i; System.out.println(String.valueOf(mid - a + 2) + query); System.out.flush(); int currGroupCount = Integer.parseInt(reader.readLine()); if(currGroupCount == (mid - a + 2)){ a = mid + 1; } else { b = mid; } } groups[i] = a; } prev = newGroups; } String ans = "0"; for(int i = 1; i <= N; i++){ ans += " " + groups[i]; } System.out.println(ans); System.out.flush(); return; } }