제출 #575519

#제출 시각아이디문제언어결과실행 시간메모리
575519definitelynotmeeRoller Coaster Railroad (IOI16_railroad)C++98
0 / 100
761 ms49460 KiB
#include<bits/stdc++.h> #include"railroad.h" #define mp make_pair #define mt make_tuple #define all(x) x.begin(), x.end() #define ff first #define ss second using namespace std; template <typename T> using matrix = vector<vector<T>>; typedef unsigned int uint; typedef unsigned long long ull; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; const ll INFL = (1LL<<62)-1; const int INF = (1<<30)-1; const double EPS = 1e-7; const int MOD = 1e9 + 7; const int RANDOM = chrono::high_resolution_clock::now().time_since_epoch().count(); const int MAXN = 1e6+1; long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) { int n = s.size(); set<int> vals; vals.insert(0); vals.insert(INF); for(int i = 0; i < n; i++){ vals.insert(s[i]); vals.insert(t[i]); } map<int,int> dic; for(int i : vals) dic[i] = dic.size(); int m = dic.rbegin()->ss; vector<int> indegree(m+2), outdegree(m+2); vector<int> delta(m+2); for(int i = 0; i < n; i++){ delta[dic[s[i]]]--; delta[dic[t[i]]]++; outdegree[dic[s[i]]]++; indegree[dic[t[i]]]++; } int cur = 0; for(int i = 0; i <= m; i++){ cur+=delta[i]; outdegree[i]+=cur; indegree[i+1]+=cur; } bool ok = outdegree[0] == 1 && indegree[m] == 1; for(int i = 1; i < m; i++){ ok&=indegree[i] == outdegree[i]; } return ok^1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...