이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define lp(i,a,b) for(int i=a;i<b;i++)
#define ff first
#define ss second
#define pb push_back
#define mk make_pair
#define pii pair<int,int>
#define ll long long
const int MAXN = 155 ;
using namespace std ;
int n ;
int myType[MAXN] ;
bool found(int l, int r, int cur)
{
if( l > r ) return false ;
int res1, res2 ;
cout << r-l+1 << endl ;
lp(i,l,r+1) cout << i << " " ;
cout << endl ;
cin>> res1 ;
cout << r-l+2 << endl << cur << " " ;
lp(i,l,r+1) cout << i << " " ;
cout << endl ;
cin >> res2 ;
if(res1 == res2) return true ;
return false ;
}
int main()
{
ios_base::sync_with_stdio(false) ;
cin.tie(NULL) ;
cin >> n ;
int cnt = 0 ;
for(int i = 1 ; i <= n ; i++ )
{
if( myType[i] > 0 ) continue ;
queue<pii> fila ;
myType[i] = ++cnt ;
if( !found(i+1,n,i) ) continue ;
fila.push(mk(i+1,n)) ;
while(!fila.empty())
{
int l = fila.front().ff , r = fila.front().ss , mid ;
fila.pop() ;
if( l == r ) { myType[l] = cnt ; continue ; }
mid=(l+r)>>1 ;
if( found(l,mid,i) ) fila.push( mk(l,mid) ) ;
if( found(mid+1, r, i) ) fila.push(mk(mid+1,r)) ;
}
}
lp(i,1,n+1) cout << myType[i] << " " ;
cout << endl ;
return 0 ;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |