Submission #946663

#TimeUsernameProblemLanguageResultExecution timeMemory
946663PagodePaivaHighway Tolls (IOI18_highway)C++17
12 / 100
202 ms31788 KiB
#include "highway.h" #include<bits/stdc++.h> #define N 90010 #define ll long long using namespace std; vector <int> g[N]; int dist[N]; int pai[N]; map <pair <int, int>, int> m; vector <int> distantes[N]; // int pai[N]; void dfs(int v, int p){ distantes[dist[v]].push_back(v); pai[v] = p; for(auto x : g[v]){ if(x == p) continue; dist[x] = dist[v] + 1; dfs(x,v); } } void find_pair(int n, std::vector<int> u, std::vector<int> v, int an, int bn) { ll a = an; ll b = bn; for(int i = 0;i < n-1;i++){ g[u[i]].push_back(v[i]); g[v[i]].push_back(u[i]); m[{u[i], v[i]}] = i; m[{v[i], u[i]}] = i; } dfs(0, 0); int t = u.size(); vector <int> w(t); for(int i = 0;i < t;i++){ w[i] = 0; } ll preco = ask(w); ll D = preco/a; int l = 0, r = (int) (distantes[D].size())-1; while(l < r){ int mid = (l+r)/2; for(int i = l;i <= mid;i++) w[m[{distantes[D][i], pai[distantes[D][i]]}]] = 1; preco = ask(w); if(preco == D*a){ l = mid+1; } else{ r = mid; } for(int i = 0;i < n-1;i++) w[i] = 0; } answer(0, distantes[D][l]); return; // int M = U.size(); // for (int j = 0; j < 50; ++j) { // std::vector<int> w(M); // for (int i = 0; i < M; ++i) { // w[i] = 0; // } // long long toll = ask(w); // } // answer(0, N - 1); }

Compilation message (stderr)

highway.cpp: In function 'void find_pair(int, std::vector<int>, std::vector<int>, int, int)':
highway.cpp:27:6: warning: unused variable 'b' [-Wunused-variable]
   27 |   ll b = bn;
      |      ^
#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...