이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "cave.h"
using namespace std;
using ll = long long;
int tr(vector<int>S){
int ask[(int)S.size()];
for(int i = 0;i < (int)S.size();i++) ask[i] = S[i];
return tryCombination(ask);
}
void ans(vector<int>S,vector<int>D){
int jog[(int)S.size()];
int d[(int)S.size()];
for(int i = 0;i < (int)S.size();i++) jog[i] = S[i];
for(int i = 0;i < (int)D.size();i++) d[i] = D[i];
answer(jog,d);
}
void exploreCave(int N) {
vector<pair<int,int>>nw;
vector<int>vis(N,0);
vector<int>d(N);
for(int i = 0;i < N;i++){
vector<int>ask(N,0);
for(int j = 0;j < N;j++) ask[j] = 0;
for(auto j : nw) ask[j.first] = j.second;
int put = 0;
int ind = tr(ask);
if(ind == i) put = 1;
vector<int>v;
for(int j = 0;j < N;j++) if(!vis[j]) v.push_back(j);
int l = 0,r = (int)v.size()-1,md;
while(l < r){
md = (l + r)/2;
for(auto j : v) ask[j] = !put;
for(int j = l;j <= md;j++) ask[v[j]] = put;
int ind = tr(ask);
if(ind > i or ind == -1) r = md;
else l = md + 1;
}
d[v[l]] = i;
nw.push_back({v[l],put});
vis[v[l]] = 1;
}
vector<int>jog(N);
for(auto i : nw) jog[i.first] = i.second;
ans(jog,d);
}
// int main(){
// ios::sync_with_stdio(false);
// cin.tie(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... |