This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include <unordered_map>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> llp;
typedef pair<int, int> ii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<vi> vvi;
typedef vector<vii> vvii;
#define pb(x) push_back(x)
#define mp(x, y) make_pair(x, y)
int N;
int rep[151];
vi reps;
void normalizereps() {
set<int> S;
for (int i = 1; i <= N; i++) S.insert(rep[i]);
unordered_map<int, int> tbl;
int cnt = 1;
while (!S.empty()) {
int x = *S.begin();
S.erase(S.begin());
tbl[x] = cnt++;
}
for (int i = 1; i <= N; i++) rep[i] = tbl[ rep[i] ];
}
int ask(int x) {
cout << reps.size()+1 << " ";
for (int i = 0; i < reps.size(); i++) {
cout << reps[i] << " ";
}
cout << x << endl;
int ret; cin >> ret;
return ret;
}
int ask(int l, int r, int x) {
cout << r-l+2 << " ";
for (int i = l; i <= r; i++) {
cout << reps[i] << " ";
}
cout << x << endl;
int ret; cin >> ret;
return ret;
}
int findrep(int x) {
int l = 0, r = reps.size();
while (r > l) {
int mid = (l + r) / 2;
int n = ask(l, mid, x);
if (n == mid-l+2) l = mid+1;
else r = mid;
}
cerr << "l: " << l << endl;
return reps[l];
}
int main(int argc, char **argv) {
cin >> N;
for (int i = 1; i <= N; i++) rep[i] = i;
reps.pb(1);
for (int i = 2; i <= N; i++) {
int n = ask(i);
if (n == reps.size()+1) {
reps.pb(i);
}
else {
rep[i] = findrep(i);
}
}
normalizereps();
cout << "0 ";
for (int i = 1; i <= N; i++) {
cout << rep[i] << " ";
}
cout << endl;
return 0;
}
Compilation message (stderr)
carnival.cpp: In function 'int ask(int)':
carnival.cpp:33:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < reps.size(); i++) {
^
carnival.cpp: In function 'int main(int, char**)':
carnival.cpp:69:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (n == reps.size()+1) {
^
# | 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... |