제출 #397881

#제출 시각아이디문제언어결과실행 시간메모리
397881cfalas기지국 (IOI20_stations)C++14
0 / 100
2 ms328 KiB
#include "stations.h" #include<bits/stdc++.h> using namespace std; #define mp make_pair #define INF 10000000 #define MOD 1000000007 #define MID ((l+r)/2) #define HASHMOD 2305843009213693951 #define ll long long #define ull unsigned long long #define F first #define S second typedef pair<ll, ll> ii; typedef pair<ii, int> iii; typedef vector<int> vi; typedef vector<ii> vii; typedef map<int, int> mii; #define EPS 1e-6 #define FOR(i,n) for(int i=0;i<((int)(n));i++) #define FORi(i,a,b) for(int i=((int)(a));i<((int)(b));i++) #define FOA(v, a) for(auto v : a) vector<vi> adj; vi labels; int cnt=0; vi sub; void dfs(int s, int p=-1){ labels[s] = cnt++; for(auto v : adj[s]) if(v!=p) dfs(v, s), sub[s]+=sub[v]; } vi label(int n, int k, std::vector<int> u, std::vector<int> v) { cnt = 0; adj.assign(n, vi()); sub.assign(n, 1); labels.assign(n, 0); FOR(i,n-1){ adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } dfs(0); FOR(i,n) cout<<labels[i]<<" "<<sub[i]<<endl; FOR(i,n) labels[i] = labels[i]*1000 + sub[i]; //FOA(v, labels) cout<<v<<" "; cout<<endl; return labels; } int get_s(int x){ return x % 1000; } int find_next_station(int s, int t, std::vector<int> c) { //cout<<s<<" "<<t<<endl; int lt = t/1000; int ls = s/1000; int prev = ls; sort(c.begin(), c.end()); FOA(x, c){ if((x/1000)<ls) continue; int xs = get_s(x); if(prev<lt && lt<=prev+xs) return x; prev+=xs; } //cout<<s<<" "<<get_s(s)<<endl; return *min_element(c.begin(), c.end()); }
#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...