#include <bits/stdc++.h>
using namespace std;
struct inter {
int start, end;
int size() {
return end - start;
}
int mid() {
return (start + end) / 2;
}
inter left() {
return {start, mid()};
}
inter right() {
return {mid(), end};
}
};
bool vu[200];
int costume[200], iCost = 1;
void findSame(int n, inter area) {
int res1, res2;
cout << area.size() + 1 << " " << n << " ";
for(int loop = area.start; loop < area.end; ++loop) {
cout << loop << " ";
}
cout << '\n';
cin >> res1;
cout << area.size() << " ";
for(int loop = area.start; loop < area.end; ++loop) {
cout << loop << " ";
}
cout << '\n';
cin >> res2;
if(res1 == res2) {
if(area.size() == 1) {
costume[area.start] = iCost;
vu[area.start] = true;
}
else {
findSame(n, area.left());
findSame(n, area.right());
}
}
}
int main() {
int n;
cin >> n;
for(int loop = 1; loop <= n; ++loop) {
vu[loop] = false;
}
for(int loop = 1; loop <= n; ++loop) {
if(!vu[loop]) {
vu[loop] = true;
costume[loop] = iCost;
findSame(loop, {loop+1, n+1});
iCost++;
}
}
cout << "0 ";
for(int loop = 1; loop <= n; ++loop) {
cout << costume[loop] << " ";
}
cout << '\n';
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... |