Submission #204242

#TimeUsernameProblemLanguageResultExecution timeMemory
204242awlintqaaRoller Coaster Railroad (IOI16_railroad)C++14
0 / 100
723 ms14584 KiB
#define fast ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0) #include <bits/stdc++.h> using namespace std; #define sqr 200 #define mid (l+r)/2 #define pb push_back #define ppb pop_back #define fi first #define se second #define lb lower_bound #define ub upper_bound #define ins insert #define era erase #define C continue #define mem(dp,i) memset(dp,i,sizeof(dp)) #define mset multiset typedef long long ll; typedef short int si; typedef long double ld; typedef pair<int,int> pi; typedef pair<ll,ll> pll; typedef vector<int> vi; typedef vector<ll> vll; typedef vector<pi> vpi; typedef vector<pll> vpll; const ll mod=1e9+7; const ll inf= 4e18; const ld pai=acos(-1); #include "railroad.h" ll n ; pll a[200009]; ll tree[800009]; void build(int node,int l,int r){ if ( l==r ){ tree[node]=a[l].se; return ; } build(node*2,l,mid); build(node*2+1,mid+1,r); tree[node]=min(tree[node*2],tree[node*2+1]); } void upd(int node,int l,int r,int id){ if ( l==r ){ tree[node]=inf; return ; } if ( id<=mid) upd(node*2,l,mid,id); else upd(node*2+1,mid+1,r,id); tree[node]=min(tree[node*2],tree[node*2+1]); } ll query(int node,int l,int r,int s,int e ){ if ( s>r || e<l ) return inf; if ( s<=l && e>=r) return tree[node]; return min(query(node*2,l,mid,s,e) , query(node*2+1,mid+1,r,s,e) ); } ll bin(ll x){ ll l =-1,r=n; while ( r-l>1){ if ( a[mid].fi>=x)l=mid; else r=mid; } return l; } long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) { n = (int) s.size(); for(int i =0 ;i < n;i ++ ) { a[i]={s[i],t[i]}; } sort(a,a+n); reverse(a,a+n); build(1,0,n-1); ll N = n ; ll S =1 ; while ( N -- ) { ll l =0 ,r=bin(S); if ( r == -1 ) return 1 ; ll X = query (1,0,n-1,l,r); if ( X == inf ) return 1; l--,r++; while ( r-l >1 ){ if ( query(1,0,n-1,0,mid) == X ) r=mid; else l=mid; } S = X ; upd(1,0,n-1,r); } return 0 ; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...