Submission #360123

#TimeUsernameProblemLanguageResultExecution timeMemory
360123arnold518Highway Tolls (IOI18_highway)C++14
6 / 100
281 ms262148 KiB
#include "highway.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const int MAXN = 9e4; const int MAXM = 13e4; int N, M, S, T; ll A, B, D; pii E[MAXM+10]; vector<pii> adj[MAXN+10]; int TT[MAXM+10]; ll query() { vector<int> V; for(int i=0; i<M; i++) V.push_back(TT[i+1]); return ask(V); } ll query2() { return (query()-D*A)/(B-A); } int P[MAXN+10], dep[MAXN+10]; void dfs(int now, int bef, int d) { dep[now]=d; for(auto nxt : adj[now]) { if(nxt.first==bef) continue; P[nxt.first]=nxt.second; dfs(nxt.first, now, d+1); } } void find_pair(int _N, vector<int> _U, vector<int> _V, int _A, int _B) { N=_N; M=_U.size(); for(int i=1; i<=M; i++) E[i]={_U[i-1]+1, _V[i-1]+1}; for(int i=1; i<=M; i++) { adj[E[i].first].push_back({E[i].second, i}); adj[E[i].second].push_back({E[i].first, i}); } A=_A; B=_B; dfs(1, 1, 0); memset(TT, 0, sizeof(TT)); D=query()/A; int lo=0, hi=N; while(lo+1<hi) { int mid=lo+hi>>1; for(int j=1; j<mid; j++) TT[j]=1; if(query2()>=D) hi=mid; else lo=mid; for(int j=1; j<mid; j++) TT[j]=0; } T=hi; lo=0, hi=N; while(lo+1<hi) { int mid=lo+hi>>1; for(int j=1; j<mid; j++) TT[j]=1; if(query2()!=0) hi=mid; else lo=mid; for(int j=1; j<mid; j++) TT[j]=0; } S=lo; answer(S-1, T-1); }

Compilation message (stderr)

highway.cpp: In function 'void find_pair(int, std::vector<int>, std::vector<int>, int, int)':
highway.cpp:61:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   61 |   int mid=lo+hi>>1;
      |           ~~^~~
highway.cpp:74:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   74 |   int mid=lo+hi>>1;
      |           ~~^~~
#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...