제출 #331114

#제출 시각아이디문제언어결과실행 시간메모리
331114pit4h도서관 (JOI18_library)C++14
19 / 100
397 ms664 KiB
#include<bits/stdc++.h> #include "library.h" using namespace std; using vi = vector<int>; int n; int qry(int x, int y) { vector<int> M(n); M[x-1] = M[y-1] = 1; return Query(M); } int qry(vi v1, vi v2) { vector<int> M(n); for(int i: v1) M[i-1] = 1; for(int i: v2) M[i-1] = 1; return Query(M); } vector<vi> solve(vector<vi> vec) { if((int)vec.size()==1) { return vec; } int sz = vec.size(); vector<vi> v1, v2; for(int i=0; i<sz/2; ++i) { v1.push_back(vec[i]); } for(int i=sz/2; i<sz; ++i) { v2.push_back(vec[i]); } v1 = solve(v1); v2 = solve(v2); for(auto v: v1) { vector<vi> new_v2; for(auto V: v2) { if(qry(v, V)==1) { if(qry(v.back(), V.back())==1) { reverse(V.begin(), V.end()); } else if(qry(v[0], V[0])==1) { reverse(v.begin(), v.end()); } else if(qry(v[0], V.back())==1) { reverse(v.begin(), v.end()); reverse(V.begin(), V.end()); } for(int i: V) { v.push_back(i); } } else { new_v2.push_back(V); } } new_v2.push_back(v); v2 = new_v2; } return v2; } void Solve(int N) { n = N; vector<vi> vec(N); for(int i=0; i<n; ++i) { vec[i].push_back(i+1); } auto res = solve(vec); Answer(res.back()); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...