Submission #203862

# Submission time Handle Problem Language Result Execution time Memory
203862 2020-02-22T17:02:58 Z jjaewon Salesman (IOI09_salesman) C++14
20 / 100
430 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 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,500001)+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 9 ms 8568 KB Output is correct
2 Correct 9 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 13 ms 8824 KB Output isn't correct
6 Incorrect 27 ms 8952 KB Output isn't correct
7 Correct 52 ms 9336 KB Output is correct
8 Incorrect 96 ms 10104 KB Output isn't correct
9 Correct 130 ms 10872 KB Output is correct
10 Incorrect 229 ms 13272 KB Output isn't correct
11 Correct 275 ms 13180 KB Output is correct
12 Incorrect 337 ms 14840 KB Output isn't correct
13 Incorrect 346 ms 14824 KB Output isn't correct
14 Incorrect 430 ms 16504 KB Output isn't correct
15 Correct 366 ms 16376 KB Output is correct
16 Incorrect 430 ms 16380 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 12 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 13 ms 8568 KB Output isn't correct
24 Incorrect 13 ms 8568 KB Output isn't correct
25 Incorrect 89 ms 10088 KB Output isn't correct
26 Incorrect 150 ms 11768 KB Output isn't correct
27 Incorrect 254 ms 14072 KB Output isn't correct
28 Incorrect 285 ms 14072 KB Output isn't correct
29 Incorrect 375 ms 16376 KB Output isn't correct
30 Incorrect 389 ms 16452 KB Output isn't correct