Submission #1170829

#TimeUsernameProblemLanguageResultExecution timeMemory
1170829akqxolotlMarathon Race 2 (JOI24_ho_t3)C++20
0 / 100
0 ms324 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define debug(x) cerr<<#x<<" is "<<x<<endl; #define debugl(x) cerr<<#x<<" is ";for(auto p:x)cerr<<p<<" ";cerr<<endl; #define fi first #define se second typedef pair<int,int> pii; #define pb push_back signed main(){ ios_base::sync_with_stdio(0);cin.tie(0); int n,l;cin>>n>>l; int a[n]; for(int i=0;i<n;i++)cin>>a[i]; sort(a,a+n); int lr[n],rl[n]; lr[0]=0,rl[n-1]=0; for(int i=1;i<n;i++){ lr[i]=lr[i-1]+(i+1)*(a[i]-a[i-1]); } for(int i=n-2;i>=0;i--){ rl[i]=rl[i+1]+(n-i-1)*(a[i+1]-a[i]); } //debugl(rl) int qn;cin>>qn; for(int q=0;q<qn;q++){ int s,e,t;cin>>s>>e>>t; int ct=n; if(s<=e){//start left of end auto itlbe=lower_bound(a,a+n,e); if(itlbe==a+n){ ct+=abs(s-a[0]); ct+=lr[n-1]; //debug(ct) ct+=(e-a[n-1])*(n+1); //debug(ct)debug(1) if(ct<=t)cout<<"Yes\n"; else cout<<"No\n"; continue; } int cp=s; int lbe=-1; //at a[lbe] youd have taken lbe+1 balls if(itlbe!=a){ lbe=(itlbe-a)-1; ct+=lr[lbe]; ct+=abs(s-a[0]); cp=a[lbe]; } ct+=(lbe+2)*(a[n-1]-cp);//run to far right ball - Validated //debug(ct) int lae=itlbe-a; ct+=(lbe+2)*(a[n-1]-a[lae]);//for running back extra cp=a[n-1]; ct+=rl[lae+1]; //debug(rl[lae+1]); ct+=(n+1)*(a[lae]-e);//final run //debug(ct)debug(2) if(ct<=t)cout<<"Yes\n"; else cout<<"No\n"; }else{ auto itlbe=upper_bound(a,a+n,e);//last thing to take before cross int cp=s; int lbe=-1; if(itlbe!=a+n){//stuff is taken before cross lbe=itlbe-a; ct+=rl[lbe+1]; ct+=abs(s-a[n-1]); cp=a[lbe]; } ct+=(lbe+2)*(cp-a[0]);//run to far right ball if(itlbe==a){ ct+=(n+1)*(a[0]-e); //debug(ct)debug(3) if(ct<=t)cout<<"Yes\n"; else cout<<"No\n"; continue; } int lae=lbe-1; ct+=(lbe+2)*(a[lae]-a[0]);//for running back extra cp=a[0]; ct+=lr[lae]; ct+=(n+1)*(a[lae]-e);//final run //debug(ct)debug(4) if(ct<=t)cout<<"Yes\n"; else cout<<"No\n"; } } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...