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 "park.h"
#include <bits/stdc++.h>
using namespace std;
#define TRACE(x) cerr << #x << " :: " << x << endl
#define _ << " " <<
#define SZ(x) ((int)(x).size())
#define ALL(x) (x).begin(),(x).end()
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
#define RFOR(i,a,b) for(int i=(a);i>=(b);--i)
static int Place[1400];
void myans(int i, int j) {
if (i > j) swap(i,j);
Answer(i,j);
}
bool myask(int i, int j, vector<int> v) {
if (i > j) swap(i,j);
v.push_back(i);
v.push_back(j);
for (int& x : v) Place[x] = 1;
int ret = Ask(i,j,Place);
for (int& x : v) Place[x] = 0;
return ret;
}
vector<int> ans;
void solve(vector<int> v) {
int l = 0;
while (true) {
int it = SZ(ans);
FOR(i,0,SZ(ans)-1) if (ans[i] == l) { it = i+1; break; }
if (it >= SZ(ans)) break;
int u = ans[it];
while (true) {
//TRACE("CHECK" _ l _ u);
if (myask(l,u,{})) {
//TRACE("ANSWER" _ l _ u);
myans(l,u);
l = u;
break;
}
int lo = -1, hi = SZ(v);
while (hi-lo > 1) {
int mid = (lo+hi)/2;
vector<int> v2;
FOR(i,0,mid) v2.push_back(v[i]);
if (myask(l,u,v2)) hi = mid;
else lo = mid;
}
u = v[hi];
v.erase(find(ALL(v),u));
FOR(i,0,SZ(ans)-1) if (ans[i] == l) {
ans.insert(ans.begin()+i+1, u);
break;
}
}
}
//for (int& x : v) { cout << x << ' '; } cout << endl;
//for (int& x : ans) { cout << x << ' '; } cout << endl;
}
void Detect(int T, int N) {
if (T == 1) {
FOR(i,0,N-1){
FOR(j,i+1,N-1){
Place[i] = Place[j] = 1;
if (Ask(i,j,Place)) Answer(i,j);
Place[i] = Place[j] = 0;
}
}
} else if (T == 2) {
ans.push_back(0);
ans.push_back(N-1);
vector<int> v;
FOR(i,1,N-2) v.push_back(i);
solve(v);
}
}
# | 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... |