Submission #1225483

#TimeUsernameProblemLanguageResultExecution timeMemory
1225483_rain_Long Distance Coach (JOI17_coach)C++20
0 / 100
0 ms320 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;

const int N=(int)2e5;
const LL INF=(LL)1e18;
	int s[N+2];
	pair<int,int>d[N+2];
	int n,m;
	LL w,x,t;

namespace subtask1{
	bool check(){
		return n<=1000 && m<=1000;
	}
	
	LL sum[N+2]={};
	LL pre[N+2]={};
	int lp[N+2]={};
	LL dp[N+2]={};
	
	void main_code(){
		s[++n]=x;
		for(int i=1;i<=m;++i){
			pre[i]=pre[i-1]+d[i].second ,
			sum[i]=sum[i-1]+(LL)((x/t)+(x%t>=d[i].first))*w;
		}
		sort(s+1,s+n+1,[=](int x,int y){
			return x%t<y%t;
		});
		for(int i=1;i<=n;++i) lp[i]=upper_bound(d+1,d+m+1,pair<int,int>(s[i]%t,-1))-d-1;

		for(int i=m;i>=1;--i){
			for(int j=1;j<=n;++j){
				if (s[j]%t>i){
					int ez=lp[j];
					LL addmore=sum[ez]-sum[i-1]-(pre[ez]-pre[i-1])-((LL)(ez-i+1)*(s[j]/t))*w;
					dp[i]=max(dp[i],dp[ez+1]+addmore);
				}
			}
			dp[i]=max(dp[i],dp[i+1]);
		}
		cout<<sum[m]-dp[1]+(LL)(x/t+(x%t>=0))*w;
	}
		      
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0) ; cout.tie(0);
	#define task "main"
	if (fopen(task".inp","r")){
		freopen(task".inp","r",stdin);
		freopen(task".out","w",stdout);
	}
	cin>>x>>n>>m>>w>>t;
	for(int i=1;i<=n;++i) cin>>s[i];
	for(int i=1;i<=m;++i) cin>>d[i].first>>d[i].second;
	return subtask1::main_code(),0;
	return 0;
}

Compilation message (stderr)

coach.cpp: In function 'int main()':
coach.cpp:53:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   53 |                 freopen(task".inp","r",stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
coach.cpp:54:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   54 |                 freopen(task".out","w",stdout);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...