# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
50145 | spencercompton | Library (JOI18_library) | C++17 | 568 ms | 716 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <cstdio>
#include <vector>
#include <bits/stdc++.h>
#include "library.h"
using namespace std;
int n;
vector<vector<int> > li;
vector<int> rev(vector<int> a){
vector<int> ret;
for(int i = a.size()-1; i>=0; i--){
ret.push_back(a[i]);
}
return ret;
}
void join(int a, int b){
vector<vector<int> > nex;
for(int i = 0; i<li.size(); i++){
if(i==a || i==b){
continue;
}
nex.push_back(li[i]);
}
for(int i = 0; i<li[b].size(); i++){
li[a].push_back(li[b][i]);
}
nex.push_back(li[a]);
li = nex;
}
bool get(int a, int b){
vector<int> use;
use.resize(n);
for(int i = a; i<=b; i++){
for(int j = 0; j<li[i].size(); j++){
use[li[i][j]] = 1;
}
}
return Query(use)!=(b-a+1);
}
bool get2(int val, int loc){
vector<int> use;
use.resize(n);
use[val] = 1;
for(int i = 0; i<li[loc].size(); i++){
use[li[loc][i]] = 1;
}
return Query(use)==1;
}
void Solve(int N)
{
n = N;
// vector<int> M(N);
// int A = Query(M);
// vector<int> res(N);
// Answer(res);
for(int i =0; i<N; i++){
vector<int> x;
x.push_back(i);
li.push_back(x);
}
while(li.size()>1){
int low = 1;
int high = li.size()-1;
while(low<high){
int mid = (low+high)/2;
if(get(0,mid)){
high = mid;
}
else{
low = mid+1;
}
}
int r = low;
low = 0;
high = r-1;
while(low<high){
int mid = (low+high+1)/2;
if(get(mid,r)){
low = mid;
}
else{
high = mid-1;
}
}
int l = low;
bool leftFirst = get2(li[l][li[l].size()-1],r);
if(leftFirst){
bool needRev = get2(li[r][li[r].size()-1],l);
if(needRev){
li[r] = rev(li[r]);
}
join(l,r);
}
else{
bool needRev = get2(li[r][0],l);
if(needRev){
li[r] = rev(li[r]);
}
join(r,l);
}
}
vector<int> ans;
for(int i = 0; i<li[0].size(); i++){
ans.push_back(li[0][i]+1);
}
Answer(ans);
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |