Submission #1148720

#TimeUsernameProblemLanguageResultExecution timeMemory
1148720minh30082008기지국 (IOI20_stations)C++20
100 / 100
300 ms572 KiB
#include "stations.h" #include <cstdio> #include <cassert> #include <map> #include <vector> #include <algorithm> #include<bits/stdc++.h> #define INF 1e18 #define fi first #define se second #define FOR(i, k, n) for(ll i = k; i <= n; i++) #define FOR1(i, k, n) for(ll i = k; i >= n; i--) #define pb push_back #define fastio ios::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define vi vector<int> #define pii pair<int, int> #define vii vector<pii> #define ll long long #define vll vector<ll> #define pll pair<ll, ll> #define re return 0 #define mii map<int, int> #define input "chinaflu.inp" #define output "chinaflu.out" #define rf freopen(input, "r", stdin); freopen(output, "w", stdout) using namespace std; const int maxn = 1e5 + 5; const int mod = 1e9 + 9; const int base = 998244353; void add(int &a, int b) { a += b; if(a >= mod) a -= mod; if(a < 0) a += mod; } mt19937 rd(chrono::steady_clock::now().time_since_epoch().count()); int rand(int l, int r) { return uniform_int_distribution<int>(l, r) (rd); } static int max_label = 0; static int r, n, k, q; static std::vector<int> u, v, labels, answers; static std::map<int, int> reverse_labels; static std::vector<std::vector<int>> adjlist; static int s, t, w; static std::vector<int> c; int depth[1005], cnt = -1; vi vv; vi adj[1005]; void DFS(int u, int par) { if(depth[u] % 2 == 0) { vv[u] = ++cnt; } for(auto v : adj[u]) { if(v == par) continue; depth[v] = depth[u] + 1; DFS(v, u); } if(depth[u] % 2) { vv[u] = ++cnt; } } vi label(int n, int k, vi u, vi v) { cnt = -1; FOR(i, 0, n - 1) adj[i].clear(); FOR(i, 0, n - 2) { adj[u[i]].pb(v[i]); adj[v[i]].pb(u[i]); } vv.clear(); FOR(i, 1, n) vv.pb(0); depth[0] = 0; DFS(0, 0); return vv; } int find_next_station(int s, int t, vi adj1) { if(adj1.size() == 1) { return adj1.back(); } if(adj1.back() > s) { if(t < s || t > adj1.back()) return adj1.back(); int id = lower_bound(adj1.begin(), adj1.end(), t) - adj1.begin(); return adj1[id]; } else { if(t > s || t < adj1[0]) return adj1[0]; int id = upper_bound(adj1.begin(), adj1.end(), t) - adj1.begin() - 1; return adj1[id]; } }
#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...