Submission #298731

#TimeUsernameProblemLanguageResultExecution timeMemory
298731DanerZeinHighway Tolls (IOI18_highway)C++14
6 / 100
108 ms8568 KiB
#include "highway.h" #include <bits/stdc++.h> #define MAX 1000000000000000000 using namespace std; typedef long long ll; typedef pair<ll,ll> ii; typedef vector<ii> vi; vector<vi> G; vector<int> hl; ll conc[110]; int isq[110]; ll m,a,b,n; vector<int> bin; int ed[90010],vis[90010]; void dijkstra(int x){ memset(vis,0,sizeof vis); queue<int> q; int e=-1; q.push(x); while(!q.empty()){ int u=q.front(); q.pop(); vis[u]=1; for(auto &v:G[u]){ if(!vis[v.first]){ e++; bin.push_back(v.second); ed[e]=v.first; q.push(v.first); } } } } void line_graph(int u){ hl.assign(m,0); ll w=ask(hl); ll no=w/a; int l=0,r=m-1; ll aux; while(r-l>1){ int mid=(l+r)/2; for(int i=0;i<m;i++){ if(i<mid) hl[i]=1; else hl[i]=0; } aux=ask(hl); if(aux==w) l=mid; else r=mid; } answer(l,l+no); } void find_pair(int N, std::vector<int> U, std::vector<int> V, int A, int B) { n=N; a=A; b=B; G.resize(N+1); for(int i=0;i<U.size();i++){ int u=U[i],v=V[i]; G[u].push_back(ii(v,i)); G[v].push_back(ii(u,i)); } bool sw=0; int id=-1; for(int i=0;i<N;i++){ if(G[i].size()>2) sw=1; if(G[i].size()==1 and id==-1) id=i; } m=U.size(); if(sw==1){ dijkstra(0); hl.assign(m,0); /* for(int i=0;i<m;i++){ cout<<bin[i]<<" "; } cout<<endl; for(int i=0;i<m;i++){ cout<<ed[i]<<" "; } cout<<endl;*/ int l=-1,r=m,w=ask(hl); while(r-l>1){ int mid=(l+r)/2; for(int i=0;i<m;i++){ if(i<=mid) hl[bin[i]]=1; else hl[bin[i]]=0; } if(ask(hl)!=w) l=mid; else r=mid; } //cout<<l<<" "<<bin[l]<<" "<<ed[l]<<endl; answer(0,ed[l]); } else{ line_graph(id); } }

Compilation message (stderr)

highway.cpp: In function 'void find_pair(int, std::vector<int>, std::vector<int>, int, int)':
highway.cpp:58:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |   for(int i=0;i<U.size();i++){
      |               ~^~~~~~~~~
#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...