Submission #985503

#TimeUsernameProblemLanguageResultExecution timeMemory
985503Alex0x0Stations (IOI20_stations)C++14
52.32 / 100
622 ms1512 KiB
// #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math") // #pragma GCC target("avx,avx2,fma") #include <bits/stdc++.h> #define f first #define s second #define fore(i,a,b) for(int i = (a), ThxMK = (b); i < ThxMK; ++i) #define pb push_back #define all(s) begin(s), end(s) #define _ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define sz(s) int(s.size()) #define ENDL '\n' using namespace std; typedef long double ld; typedef int lli; typedef pair<lli,lli> ii; typedef vector<lli> vi; typedef vector<ii> vii; #define deb(x) cout << #x": " << (x) << endl; const lli INF = 1e9 + 12; const lli N = 1e3 + 12; vector <vi> adj; vi tk; lli curVis = 0; lli id = 0; lli vis[N]; lli dfs(lli u){ // cout << u << ' '; vis[u] = curVis; lli cc = 0; lli a = INF, b = -INF; for (auto &i : adj[u]){ if (vis[i] == curVis) continue; cc++; lli x = dfs(i); a = min(a, x % 1000); b = max(b, lli(x / 1000ll)); } a = min(a, id); b = max(b, id); id++; // cout << a << ' ' << b << ENDL; tk[u] = (1000ll * b) + a; return tk[u]; } vi label(lli n, lli k, vi u, vi v){ adj.resize(n + 5); for (auto &i : adj) i.clear(); tk.resize(n); for (auto &i : tk) i = -1ll; id = 0; fore(i,0,n-1){ adj[u[i]].pb(v[i]); adj[v[i]].pb(u[i]); } ++curVis; dfs(0); // cout << ENDL; return tk; } lli find_next_station(lli s, lli t, vi c){ lli l = s % 1000; lli r = lli(s / 1000ll); lli ll = t % 1000; lli rr = lli(t / 1000ll); lli father; for (auto & i : c){ lli a = i % 1000; lli b = lli(i / 1000ll); if (a <= l && r <= b) father = i; } lli ans = father; for (auto & i : c){ if (i == father) continue; lli a = i % 1000; lli b = lli(i / 1000ll); if (a <= ll && rr <= b) ans = i; } return ans; } // int main(){ _ // // freopen("file.in","r",stdin); // // freopen("file.out","w",stdout); // vector<vi> vv; // lli t; cin >> t; // while (t--){ // lli n, k; cin >> n >> k; // vi a(n-1); vi b(n-1); // fore(i,0,n-1) cin >> a[i] >> b[i]; // vi v = label(n, k, a, b); // for (auto & i : v) cout << i << ' '; cout << ENDL; // vv.pb(v); // } // return 0; // }

Compilation message (stderr)

stations.cpp: In function 'lli find_next_station(lli, lli, vi)':
stations.cpp:85:10: warning: 'father' may be used uninitialized in this function [-Wmaybe-uninitialized]
   85 |   return ans;
      |          ^~~
#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...