# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
406063 | urd05 | Highway Tolls (IOI18_highway) | C++14 | 200 ms | 15136 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "highway.h"
#include <bits/stdc++.h>
using namespace std;
int ind[100000];
int pos[100000];
typedef pair<int,int> P;
vector<P> adj[90000];
int cnt=1;
void dfs(int v,int prev) {
for(int i=0;i<adj[v].size();i++) {
int nt=adj[v][i].first;
if (nt==prev)
continue;
pos[adj[v][i].second]=nt;
ind[cnt++]=adj[v][i].second;
dfs(nt,v);
}
}
void find_pair(int n,vector<int> u,vector<int> v,int a,int b) {
int m=u.size();
for(int i=0;i<u.size();i++) {
adj[u[i]].push_back(P(v[i],i));
adj[v[i]].push_back(P(u[i],i));
}
dfs(0,-1);
vector<int> vec(m);
int l=ask(vec)/a;
int lo=0; //impossible
int hi=n-1; //possible
while (lo+1<hi) {
int mid=(lo+hi)/2;
for(int i=0;i<m;i++) {
vec[i]=0;
}
for(int i=1;i<=mid;i++) {
vec[ind[i]]=1;
}
if (ask(vec)==1LL*l*b) {
hi=mid;
}
else {
lo=mid;
}
}
int v1=pos[ind[hi]];
cnt=1;
dfs(v1,-1);
for(int i=0;i<m;i++) {
vec[i]=0;
}
lo=0; //impossible
hi=n-1; //possible
while (lo+1<hi) {
int mid=(lo+hi)/2;
for(int i=0;i<m;i++) {
vec[i]=0;
}
for(int i=1;i<=mid;i++) {
vec[ind[i]]=1;
}
if (ask(vec)==1LL*l*b) {
hi=mid;
}
else {
lo=mid;
}
}
int v2=pos[ind[hi]];
answer(v1,v2);
}
Compilation message (stderr)
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |