# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
539709 | Eug1ena | Roller Coaster Railroad (IOI16_railroad) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
using lint = long long;
#define rep(i, n) for(int i = 0; i < int(n); i++)
#define rep2(i, l, n) for(int i = int(l); i < int(n); i++)
#define repr(i, n) for(int i = int(n) - 1; i >= 0; i--)
#define all(x) (x).begin(), (x).end()
inline int has(lint x, int k){ return (x >> k) & 1; };
lint plan_roller_coaster(vector<int> s_in, vector<int> t_in){
int n = int(s_in.size());
n++;
int a[n], b[n];
rep(i, n - 1){
a[i] = s_in[i];
b[i] = t_in[i];
}
a[n - 1] = 1e9 + 100;
b[n - 1] = 1;
vector<int> nums;
rep(i, n){
nums.push_back(a[i]);
nums.push_back(b[i]);
}
sort(all(nums));
nums.erase(unique(all(nums)), nums.end());
int sz = int(nums.size());
vector<int> deg(sz, 0);
rep(i, n){
int a_idx = int(lower_bound(all(nums), a[i]) - nums.begin());
int b_idx = int(lower_bound(all(nums), b[i]) - nums.begin());
deg[a_idx]--;
deg[b_idx]++;
}
int sum = deg[0];
vector<int> big_light(sz - 1);
rep(i, n - 1){
big_light[i] = sum;
sum += deg[i];
}
rep(i, n - 1){
if(big_light[i] < 0){
return 1;
}
}
return 0;
}
int main(){
// vector<int> s{1, 4, 5, 6};
// vector<int> t{7, 3, 8, 6};
// cout << plan_roller_coaster(s, t) << endl; // 3
vector<int> s{1, 5, 3};
vector<int> t{4, 2, 6};
cout << plan_roller_coaster(s, t) << endl; // 0
}