#include <bits/stdc++.h>
#include "chameleon.h"
//https://cms.ioi-jp.org/tasks/chameleon/descriptionusing namespace std;
using namespace std;
void Solve(int N){
int n=N*2;
vector<bool>solved(n+1,0);
map<int,vector<int>>theval;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j){continue;}
if(Query({i,j})==1){theval[i].push_back(j);}
}
}
map<int,vector<int>>graph;
int haha=0;
for(int i=1;i<=n;i++){
if(solved[i]==1)continue;
if(theval[i].size()==1){haha++;Answer(i,theval[i][0]);solved[i]=1;solved[theval[i][0]]=1;continue;}
if(Query({i,theval[i][0],theval[i][1]})==1){graph[i].push_back(theval[i][2]);}
else if(Query({i,theval[i][0],theval[i][2]})==1){graph[i].push_back(theval[i][1]);}
else if(Query({i,theval[i][2],theval[i][1]})==1){graph[i].push_back(theval[i][0]);graph[theval[i][0]].push_back(i);}
}
for(int i=1;i<=n;i++){
if(solved[i]==1){continue;}
int a=graph[i][0],b=graph[i][1];
for(int j=0;j<3;j++){
if(theval[i][j]!=a&&theval[i][j]!=b){haha++;Answer(i,theval[i][j]);solved[i]=1;solved[theval[i][j]]=1;break;}
}
assert(haha<=N);
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
384 KB |
Output is correct |
2 |
Correct |
4 ms |
384 KB |
Output is correct |
3 |
Incorrect |
25 ms |
384 KB |
Wrong Answer [3] |
4 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
384 KB |
Output is correct |
2 |
Incorrect |
4 ms |
256 KB |
Wrong Answer [5] |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
384 KB |
Output is correct |
2 |
Incorrect |
4 ms |
256 KB |
Wrong Answer [5] |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
384 KB |
Output is correct |
2 |
Incorrect |
6 ms |
384 KB |
Wrong Answer [6] |
3 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
5 ms |
384 KB |
Output is correct |
2 |
Correct |
4 ms |
384 KB |
Output is correct |
3 |
Incorrect |
25 ms |
384 KB |
Wrong Answer [3] |
4 |
Halted |
0 ms |
0 KB |
- |