#include "chameleon.h"
#include <bits/stdc++.h>
using namespace std;
//int Query(const std::vector<int> &p)
//void Answer(int a, int b)
const int MAXN = 1024;
int n;
vector<int>g[MAXN];
bool vis[MAXN];
/*
4
0 0 0 0 1 1 1 1
1 2 3 4 1 2 3 4
6 7 8 5 2 3 4 1
*/
int in[MAXN],ou[MAXN];
vector<int> subred(int l, int r)
{
vector<int>res;
for(int i = l; i <= r; i++) res.push_back(i);
return res;
}
int solve1(int i, int l, int r, int mi)
{
int nach = l-1;
int mid;
//cout << l << "-" << r << endl;
while(l <= r)
{
mid = (l+r)/2;
vector<int>p = subred(n+1,mid);
p.push_back(i);
if(Query(p) == (mid-nach) + 1 - mi) r = mid-1;
else l = mid+1;
}
//cout << l << endl;
return l;
}
int solve3(int i)
{
int k1 = solve1(i,n+1,2*n,1);
int k2 = solve1(i,n+1,2*n,2);
vector<int>p1;
for(int i = n+1; i <= 2*n; i++) if(i != k1) p1.push_back(i);
p1.push_back(i);
//cout << k1 << " " << k2 << endl;
if(Query(p1) == p1.size() - 1) return k1;
return k2;
}
void Solve(int N)
{
n = N;
for(int i = 1; i <= n; i++)
{
vector<int>p = subred(n+1,2*n);
p.push_back(i);
if(Query(p) == n)
{
int d = solve1(i,n+1,2*n,1);
//cout << i << " - " << d << endl;
Answer(i,d);
}
else
{
int d = solve3(i);
Answer(i,d);
//cout << i << " --- " << d << endl;
}
}
}
| # | 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... |