제출 #1311874

#제출 시각아이디문제언어결과실행 시간메모리
1311874settopRoller Coaster Railroad (IOI16_railroad)C++20
0 / 100
144 ms28540 KiB
#include "railroad.h" #include<bits/stdc++.h> using namespace std; #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #define ll long long #define fall(i,a,b) for(int i=a;i<=b;i++) #define rfall(i,a,b) for(int i=a;i>=b;i--) #define pb push_back #define all(x) x.begin(),x.end() #define sz(x) (int)x.size() #define ordered_set tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> const ll inf=1e16; typedef pair<ll,ll> pii; long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) { int n = sz(s); vector<bool> z(n); set<pii> st; fall(i,0,n-1) st.insert({t[i],i}); int cara=0,c; long long ans=0; fall(i,1,n-1) if(t[i]>t[cara]) cara=i; c=cara; st.erase({t[cara],cara}); while(sz(st)){ auto it=st.upper_bound({s[cara],-1}); if(it!=st.begin()) it--; else break; auto [u,i]=*it; ans+=max(0ll,u-s[cara]); cara=i; st.erase(it); } if(!sz(st)) return 0; cara=-1; set<pii> st2; for(auto it:st){ auto [u,j]=it; z[j]=1; if(cara==-1) cara=j; if(t[j]>t[cara]) cara=j; st2.insert({t[j],j}); } st2.erase({t[cara],cara}); while(sz(st2)){ auto it=st.upper_bound({s[cara],-1}); if(it!=st.begin()) it--; else return 1; auto [u,i]=*it; ans+=max(0ll,u-s[cara]); cara=i; st.erase(it); } if(s[cara]<t[c]) return 1; return ans; }

컴파일 시 표준 에러 (stderr) 메시지

railroad.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
railroad_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...