Submission #931581

# Submission time Handle Problem Language Result Execution time Memory
931581 2024-02-22T06:00:40 Z moonrabbit2 Salesman (IOI09_salesman) C++17
60 / 100
191 ms 36048 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],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=r;i>=l;i--){
			mx=max(mx,T1.qry(a[i][1])-D*a[i][1]-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,T2.qry(500002-a[i][1])+U*a[i][1]+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:46:4: note: in expansion of macro 'debug'
   46 |    debug(i,dp[i]);
      |    ^~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 12888 KB Output is correct
2 Correct 2 ms 13144 KB Output is correct
3 Correct 2 ms 12892 KB Output is correct
4 Correct 3 ms 12892 KB Output is correct
5 Correct 3 ms 12892 KB Output is correct
6 Correct 9 ms 12892 KB Output is correct
7 Correct 20 ms 12944 KB Output is correct
8 Correct 38 ms 19072 KB Output is correct
9 Correct 58 ms 19024 KB Output is correct
10 Correct 101 ms 20940 KB Output is correct
11 Correct 111 ms 21180 KB Output is correct
12 Correct 140 ms 21072 KB Output is correct
13 Correct 144 ms 21076 KB Output is correct
14 Correct 184 ms 21848 KB Output is correct
15 Correct 170 ms 21952 KB Output is correct
16 Correct 191 ms 22016 KB Output is correct
17 Runtime error 12 ms 25948 KB Execution killed with signal 6
18 Runtime error 14 ms 25948 KB Execution killed with signal 6
19 Runtime error 12 ms 25948 KB Execution killed with signal 6
20 Runtime error 12 ms 25840 KB Execution killed with signal 6
21 Runtime error 12 ms 25948 KB Execution killed with signal 6
22 Runtime error 14 ms 25948 KB Execution killed with signal 6
23 Runtime error 13 ms 25864 KB Execution killed with signal 6
24 Runtime error 13 ms 25808 KB Execution killed with signal 6
25 Runtime error 39 ms 29896 KB Execution killed with signal 6
26 Runtime error 66 ms 30140 KB Execution killed with signal 6
27 Runtime error 108 ms 34128 KB Execution killed with signal 6
28 Runtime error 113 ms 34128 KB Execution killed with signal 6
29 Runtime error 148 ms 35840 KB Execution killed with signal 6
30 Runtime error 160 ms 36048 KB Execution killed with signal 6