Submission #1054744

#TimeUsernameProblemLanguageResultExecution timeMemory
1054744LittleOrangeStations (IOI20_stations)C++17
0 / 100
395 ms772 KiB
#include "stations.h" #include <vector> #include<bits/stdc++.h> using namespace std; using ll = int; std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { vector<ll> labels(n); iota(labels.begin(),labels.end(),0); vector<vector<ll>> con(n); for(ll i = 0;i<n-1;i++){ con[u[i]].push_back(v[i]); con[v[i]].push_back(u[i]); } fill(labels.begin(),labels.end(),-1); /*for(ll i = 0;i<n;i++){ if (con[i].size()==1&&labels[i]==-1){ ll cur = i; ll it = 0; while(cur!=-1){ labels[cur] = it++; ll nxt = -1; for(ll j : con[cur]) if (labels[j]==-1) nxt = j; cur = nxt; } } }*/ ll rt = 0; for(ll i = 0;i<n;i++) if(con[i].size()>2) rt = i; labels[rt] = 0; ll gp = 0; for(ll i : con[rt]){ ll g = (++gp)*1000; ll x = i; while(x!=-1){ labels[x] = g++; ll nw = -1; for(ll j : con[x]){ if(labels[j]==-1){ nw = j; } } x = nw; } } return labels; } int find_next_station(int s, int t, std::vector<int> c) { /*s++;t++; ll lgs = __lg(s), lgt = __lg(t); if (lgs<lgt){ ll x = t>>(lgt-lgs); if (s==x){ return (t>>(lgt-lgs-1))-1; } } return (s>>1)-1;*/ /*if (t>s) return s+1; else return s-1;*/ ll gs = s/1000; ll gt = s/1000; if (gs==0){ for(ll i : c){ if (i/1000==gt) return i; } }else if(gs==gt){ if(s>t){ for(ll i : c){ if (i<s) return i; } }else{ for(ll i : c){ if (i>s) return i; } } }else{ for(ll i : c){ if (i<s) return i; } } }

Compilation message (stderr)

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:82:1: warning: control reaches end of non-void function [-Wreturn-type]
   82 | }
      | ^
#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...