제출 #498338

#제출 시각아이디문제언어결과실행 시간메모리
498338sohomdutta사육제 (CEOI14_carnival)Java
0 / 100
818 ms19032 KiB
import java.util.*;
public class carnival {
    static int count = 1;
    static int [] array;
    static Scanner sc = new Scanner(System.in);
    public static void main(String[] args){
        int n = sc.nextInt();
        System.out.flush();
        array = new int[n+1];
        for(int i = 1; i < n; i++){
            if(array[i]==0){
                array[i]=count;
                //System.out.println("HELLO: " + i);
                //System.out.println(array[i]);
                calculate(i+1, n, i);
                count++;
            }
        }
        System.out.print("0 ");
        for(int i = 1; i < n+1; i++){
            System.out.print((array[i]-1)+" ");
        }
        System.exit(0);
    }
    public static void calculate(int left, int right, int start){
        if(left>right){
            return;
        }
        print(left, right, start);
        int x = sc.nextInt();
        print(left, right, -1);
        int x2 = sc.nextInt();
        if(x==x2+1){
            //System.out.println("ONE: " + left + " " + right);
            return;
        }else if((x==1)&&(x2==1)){
            //System.out.println("TWO: " + left + " " + right);
            for(int i = left; i <= right; i++){
                array[i]=count;
            }
        }else{
            //System.out.println("THREE: " + left + " " + right);
            int mid = left + (right-left)/2;
            calculate(left, mid, start);
            calculate(right, mid+1, start);
        }
    }
    public static void print(int left, int right, int start){

        if(start!=-1){
            System.out.print((right-left+2) + " ");
            System.out.print(start + " ");
        }else{
            System.out.print((right-left+1) + " ");
        }
        for(int i = left; i <= right; i++){
            System.out.print(i+" ");
        }
        System.out.flush();

    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...