Submission #203861

# Submission time Handle Problem Language Result Execution time Memory
203861 2020-02-22T16:49:19 Z jjaewon Salesman (IOI09_salesman) C++14
20 / 100
427 ms 16504 KB
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const int base=1<<19;

int N,D,U,S,dp[500010],Dtree[1<<20],Utree[1<<20];
struct market{ int T,L,M; }d[500010];
bool cmp(const market &p1,const market &p2){ return p1.T==p2.T?p1.L<p2.L:p1.T<p2.T; };

int query(int (&tree)[1<<20],int l,int r){
	l+=base; r+=base;
	int ret=-inf;
	while(l<=r){
		if(l&1) ret=max(ret,tree[l]);
		if(~r&1) ret=max(ret,tree[r]);
		l=(l+1)>>1; r=(r-1)>>1;
	}
	return ret;
}

void update(int (&tree)[1<<20],int p,int v){
	p+=base-1;
	while(p>>=1) tree[p]=max(tree[p],v);
}
/*
int query(int (&tree)[1<<20],int l,int r){
	int ret=-inf;
	for(;l<=r;l++) ret=max(ret,tree[l]);
	return ret;
}

void update(int (&tree)[1<<20],int p,int v){
	tree[p]=v;
}
*/


int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    cin>>N>>D>>U>>S;
    for(int i=1;i<=N;i++) cin>>d[i].T>>d[i].L>>d[i].M;
    sort(d+1,d+N+1,cmp);
	d[0]={0,S,0}; d[N+1]={500010,S,0};
	for(int i=0;i<(1<<20);i++) Dtree[i]=Utree[i]=-inf;
	update(Dtree,d[0].L,dp[0]-d[0].L*D);
	update(Utree,d[0].L,dp[0]+d[0].L*U);
	for(int i=1;i<=N+1;i++){
		dp[i]=max(query(Dtree,d[i].L,500000)+d[i].L*D,query(Utree,0,d[i].L-1)-d[i].L*U)+d[i].M;
		update(Dtree,d[i].L,dp[i]-d[i].L*D);
		update(Utree,d[i].L,dp[i]+d[i].L*U);
	}
	cout<<dp[N+1];
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 10 ms 8568 KB Output is correct
2 Correct 11 ms 8568 KB Output is correct
3 Correct 10 ms 8568 KB Output is correct
4 Incorrect 11 ms 8568 KB Output isn't correct
5 Incorrect 14 ms 8568 KB Output isn't correct
6 Incorrect 25 ms 8828 KB Output isn't correct
7 Correct 50 ms 9336 KB Output is correct
8 Incorrect 92 ms 10104 KB Output isn't correct
9 Correct 130 ms 10872 KB Output is correct
10 Incorrect 229 ms 13304 KB Output isn't correct
11 Correct 260 ms 13304 KB Output is correct
12 Incorrect 341 ms 14840 KB Output isn't correct
13 Incorrect 343 ms 14816 KB Output isn't correct
14 Incorrect 427 ms 16456 KB Output isn't correct
15 Correct 366 ms 16504 KB Output is correct
16 Incorrect 426 ms 16504 KB Output isn't correct
17 Correct 10 ms 8568 KB Output is correct
18 Incorrect 10 ms 8568 KB Output isn't correct
19 Incorrect 11 ms 8568 KB Output isn't correct
20 Incorrect 11 ms 8568 KB Output isn't correct
21 Incorrect 11 ms 8568 KB Output isn't correct
22 Incorrect 12 ms 8568 KB Output isn't correct
23 Incorrect 14 ms 8572 KB Output isn't correct
24 Incorrect 13 ms 8568 KB Output isn't correct
25 Incorrect 85 ms 10232 KB Output isn't correct
26 Incorrect 165 ms 11644 KB Output isn't correct
27 Incorrect 250 ms 14072 KB Output isn't correct
28 Incorrect 288 ms 14072 KB Output isn't correct
29 Incorrect 371 ms 16376 KB Output isn't correct
30 Incorrect 373 ms 16376 KB Output isn't correct