Submission #1240330

#TimeUsernameProblemLanguageResultExecution timeMemory
1240330Sir_Ahmed_ImranStations (IOI20_stations)C++17
0 / 100
3076 ms2162688 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; #define MAXN 1001 #define nl '\n' #define ff first #define ss second #define ll long long #define ld long double #define terminator main #define pll pair<ll,ll> #define add insert #define append push_back #define pii pair<int,int> #define all(x) (x).begin(),(x).end() bool p[MAXN]; int siz[MAXN]; vector<int> et; vector<int> a[MAXN]; void dfs(int v, int u){ siz[v] = 1; et.append(v); for(auto & i : a[v]){ if(i == u) continue; p[i] = !p[v]; dfs(i, v); siz[v] += siz[i]; } } vector<int> label(int n, int k, vector<int> u, vector<int> v) { vector<int> x, l(n, -1); for(int i = 0; i < n - 1; i++){ a[u[i]].append(v[i]); a[v[i]].append(u[i]); x.append(i); } x.append(n - 1); dfs(0, -1); return x; for(auto & i : et){ if(p[i]){ l[i] = x[siz[i] - 1]; for(int j = siz[i] - 1; j < x.size() - 1; j++) x[j] = x[j + 1]; x.pop_back(); } else{ l[i] = x[0]; for(int j = 0; j < x.size() - 1; j++) x[j] = x[j + 1]; x.pop_back(); } } return l; } int find_next_station(int s, int t, vector<int> c){ if(c[0] > s){ if(c.back() < t || t < s) return c.back(); return *lower_bound(all(c), t); } if(c[0] > t || t > s) return c[0]; return *(--upper_bound(all(c), t)); }
#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...