#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 || l <= cur ) return false ;
int res1, res2 ;
cout << r-l+1 << " " ;
lp(i,l,r+1) cout << i << " " ;
cout << endl ;
cin>> res1 ;
cout << r-l+2 << " " << 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 ;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
20 ms |
248 KB |
Same person came twice to the party. |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
21 ms |
376 KB |
Same person came twice to the party. |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
9 ms |
252 KB |
Unexpected end of file - int32 expected |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
18 ms |
376 KB |
Same person came twice to the party. |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
14 ms |
380 KB |
Same person came twice to the party. |
2 |
Halted |
0 ms |
0 KB |
- |