제출 #427458

#제출 시각아이디문제언어결과실행 시간메모리
427458Monchito통행료 (IOI18_highway)C++14
6 / 100
200 ms4232 KiB
#include "highway.h" using namespace std; #define sz(x) (int)x.size() const int MAXN = 9e4; int M; vector<pair<int,int>> G[MAXN]; bool vis[MAXN]; vector<int> p; long long cost; /* void DFS(int u, int& ans) { vis[u] = true; for(pair<int,int> v : G[u]) { if(!vis[v.first]) { p[v.second] = 1; if(ask(p) > cost) { p[v.second] = 0; DFS(v.first, ans); return; } } } ans = u; } */ int bs1() { int l=1, r=M, mid, ret=-1; while(r >= l) { mid = l + (r-l)/2; for(int i=0; i<mid; i++) p[i] = 1; if(ask(p) > cost) { r = mid-1; ret = mid-1; } else l = mid+1; for(int i=0; i<mid; i++) p[i] = 0; } return ret; } int bs2() { int l=1, r=M, mid, ret=-1; while(r >= l) { mid = l + (r-l)/2; for(int i=M-1; i>=M-mid; i--) p[i] = 1; if(ask(p) > cost) { r = mid-1; ret = M-mid; } else l = mid+1; for(int i=M-1; i>=M-mid; i--) p[i] = 0; } return ret; } void find_pair(int N, vector<int> U, vector<int> V, int A, int B) { M = sz(U); p = vector<int>(M, 0); cost = ask(p); int s = U[bs1()], t = V[bs2()]; answer(s, t); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...