제출 #1161870

#제출 시각아이디문제언어결과실행 시간메모리
1161870simona1230사육제 (CEOI14_carnival)C++17
0 / 100
0 ms412 KiB
#include <bits/stdc++.h> using namespace std; int n; int a[151],c[151]; int query(int l,int r,int id) { cout<<r-l+2<<" "; for(int i=l;i<=r;i++) cout<<i<<" "; if(id!=-1)cout<<id<<endl; else cout<<endl; int x; cin>>x; return x; } void rec(int l,int r) { if(l==r) { a[l]=1; return; } if(l>r)return; int m=(l+r)/2; rec(l,m); rec(m+1,r); int num=0,diff; for(int i=l;i<=m;i++) num=max(num,a[i]); diff=num; for(int i=m+1;i<=r;i++) c[a[i]]=0; for(int i=m+1;i<=r;i++) { if(c[a[i]]) { a[i]=c[a[i]]; continue; } int lf=l,rt=m; int idx=-1; while(lf<=rt) { int md=(lf+rt)/2; if(query(l,md,i)==query(l,md,-1)) { idx=md; rt=md-1; } else lf=md+1; } if(idx==-1) { diff++; c[a[i]]=diff; a[i]=diff; } else { c[a[i]]=a[idx]; a[i]=a[idx]; } } } int main() { cin>>n; rec(1,n); cout<<0<<" "; for(int i=1;i<=n;i++) cout<<a[i]<<" "; cout<<endl; return 0; }
#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...