Submission #1188711

#TimeUsernameProblemLanguageResultExecution timeMemory
1188711racha555Carnival (CEOI14_carnival)C++20
100 / 100
3 ms420 KiB
#include <bits/stdc++.h>
using namespace std;
vector<int> unq,a;
int n;
bool ask(vector<int> &arr,int start,int end,int late){
   start--;
   cout<<end-start+1<<" ";
   for(int i=start;i<=end-1;i++){
      cout<<unq[i]<<" ";
   }
   cout<<late<<" ";
   int n;
   cin>>n;
   if(n==end-start+1)return true;
   else{
      return false;
   }
}

map<int,int> coss;



int main(){
      
         cin>>n;
   coss[1]=1;
         unq.emplace_back(1);
         for(int i=2;i<=n;i++){
            if(ask(unq,1,unq.size(),i)){
               unq.emplace_back(i);
            }
         }
         // cout<<0<<" ";
         int now=1;
         for(auto i:unq){
            coss[i]=now++;

         }
         for(int i=1;i<=n;i++){
         if(coss[i]==0){
            int l=1,mid,r=unq.size();
            int best=0;
            // cout<<"\n"<<r<<"\n";
            while(l<=r){
               mid=l+(r-l)/2;
               // cout<<r<<" "<<mid<<"\n";
               if(mid<=0)break;
               if(!ask(unq,l,mid,i)){
                  best=r;
            
                 if(l==r){
                  break;
                 }
                 r=mid;
               }
               else{
                  l=mid+1;
                 
               }
            }
            
           coss[i]=coss[unq[best-1]];
         } 
      
         }
         cout<<0<<" ";
         for(int i=1;i<=n;i++){
            cout<<coss[i]<<" ";
         }
}
#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...