Submission #931586

# Submission time Handle Problem Language Result Execution time Memory
931586 2024-02-22T06:09:43 Z moonrabbit2 Salesman (IOI09_salesman) C++17
60 / 100
187 ms 39508 KB
#include <bits/stdc++.h>
using namespace std;
#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 42
#endif
using ll=long long;
using pii=array<int,2>;
using tii=array<int,3>;
const int N=5e5+5;
int n,s;
tii a[N];
ll U,D,S[N],d[N],dp[N];
struct Seg{
	ll F[N]={0};
	void init(){
		for(int i=1;i<=500001;i++) F[i]=-1e18;
	}
	void upd(int i,ll v){
		for(;i<=500001;i+=i&-i) F[i]=max(F[i],v);
	}
	ll qry(int i){
		ll r=-1e18;
		for(;i;i-=i&-i) r=max(r,F[i]);
		return r;
	}
}T1,T2;
int main(){
	ios::sync_with_stdio(false); cin.tie(0);
	cin>>n>>U>>D>>s;
	for(int i=1;i<=n;i++) cin>>a[i][0]>>a[i][1]>>a[i][2];
	sort(a+1,a+1+n);
	a[++n]={1000000000,s,0};
	T1.init(); T2.init();
	T1.upd(s,D*s); T2.upd(500002-s,-U*s);
	for(int l=1;l<=n;l++){
		int r=l;
		while(r+1<=n&&a[l][0]==a[r+1][0]) r++;
		ll mx=-1e18;
		S[l-1]=0;
		for(int i=l;i<=r;i++) S[i]=S[i-1]+a[i][2];
		for(int i=l;i<=r;i++) d[i]=max(T1.qry(a[i][1])-D*a[i][1],T2.qry(500002-a[i][1])+U*a[i][1]);
		for(int i=r;i>=l;i--){
			mx=max(mx,d[i]-U*a[i][1]+S[i]);
			dp[i]=mx+U*a[i][1]-S[i-1];
			debug(i,dp[i]);
		}
		mx=-1e18;
		for(int i=l;i<=r;i++){
			mx=max(mx,d[i]+D*a[i][1]-S[i-1]);
			dp[i]=max(dp[i],mx-D*a[i][1]+S[i]);
		}
		for(int i=l;i<=r;i++){
			T1.upd(a[i][1],dp[i]+D*a[i][1]);
			T2.upd(500002-a[i][1],dp[i]-U*a[i][1]);
		}
		assert(l==r);
		l=r;
	}
	cout<<dp[n];
	return 0;
}

Compilation message

salesman.cpp: In function 'int main()':
salesman.cpp:6:20: warning: statement has no effect [-Wunused-value]
    6 | #define debug(...) 42
      |                    ^~
salesman.cpp:47:4: note: in expansion of macro 'debug'
   47 |    debug(i,dp[i]);
      |    ^~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 14936 KB Output is correct
2 Correct 2 ms 14940 KB Output is correct
3 Correct 2 ms 14940 KB Output is correct
4 Correct 3 ms 14936 KB Output is correct
5 Correct 4 ms 14940 KB Output is correct
6 Correct 9 ms 14940 KB Output is correct
7 Correct 26 ms 14800 KB Output is correct
8 Correct 38 ms 21076 KB Output is correct
9 Correct 55 ms 22992 KB Output is correct
10 Correct 107 ms 25176 KB Output is correct
11 Correct 114 ms 25168 KB Output is correct
12 Correct 150 ms 25244 KB Output is correct
13 Correct 144 ms 25168 KB Output is correct
14 Correct 187 ms 25684 KB Output is correct
15 Correct 182 ms 25664 KB Output is correct
16 Correct 182 ms 25668 KB Output is correct
17 Runtime error 14 ms 30040 KB Execution killed with signal 6
18 Runtime error 14 ms 30044 KB Execution killed with signal 6
19 Runtime error 14 ms 30044 KB Execution killed with signal 6
20 Runtime error 14 ms 29900 KB Execution killed with signal 6
21 Runtime error 14 ms 30044 KB Execution killed with signal 6
22 Runtime error 17 ms 30044 KB Execution killed with signal 6
23 Runtime error 15 ms 30044 KB Execution killed with signal 6
24 Runtime error 16 ms 30044 KB Execution killed with signal 6
25 Runtime error 42 ms 34172 KB Execution killed with signal 6
26 Runtime error 69 ms 34132 KB Execution killed with signal 6
27 Runtime error 110 ms 38224 KB Execution killed with signal 6
28 Runtime error 115 ms 38228 KB Execution killed with signal 6
29 Runtime error 156 ms 39488 KB Execution killed with signal 6
30 Runtime error 156 ms 39508 KB Execution killed with signal 6