답안 #1094100

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1094100 2024-09-28T12:19:00 Z alexander707070 Global Warming (CEOI18_glo) C++14
58 / 100
916 ms 178356 KB
#include<bits/stdc++.h>
#define MAXN 200007
using namespace std;
 
const int inf=1e9;
 
struct ST{
	struct node{
		int l,r,val;
	};
 
	node tree[50*MAXN];
	int num;
	
	void init(){
		num=1;
		tree[num]={0,0,0};
	}
 
	void addnode(){
		num++;
		tree[num]={0,0,0};
	}
 
	void check(int v){
		if(tree[v].l==0){
			addnode(); tree[v].l=num;
		}
 
		if(tree[v].r==0){
			addnode(); tree[v].r=num;
		}
	}
 
	void update(int v,long long l,long long r,int pos,int val){
		if(l==r){
			tree[v].val=max(tree[v].val,val);
		}else{
			long long tt=(l+r)/2;
			check(v);
 
			if(pos<=tt)update(tree[v].l,l,tt,pos,val);
			else update(tree[v].r,tt+1,r,pos,val);
 
			tree[v].val=max(tree[tree[v].l].val,tree[tree[v].r].val);
		}
	}
 
	int getmax(int v,long long l,long long r,long long ll,long long rr){
		if(ll>rr or v==0)return 0;
		if(l==ll and r==rr){
			return tree[v].val;
		}else{
			long long tt=(l+r)/2;
			return max( getmax(tree[v].l,l,tt,ll,min(tt,rr)) , getmax(tree[v].r,tt+1,r,max(tt+1,ll),rr) );
		}
	}
}seg[3];
 
int n,a[MAXN],ans,x;
int dp[MAXN][3];
 
int solve(int d){
	seg[0].init();
	seg[1].init();
	seg[2].init();
 
	int res=0;
 
	for(int i=1;i<=n;i++){
		dp[i][0]=seg[0].getmax(1,0,2*inf,0,a[i]-1)+1;
		dp[i][1]=max(seg[1].getmax(1,0,2*inf,0,a[i]-1)+1 , seg[0].getmax(1,0,2*inf,0,a[i]+d-1)+1);
		dp[i][2]=max(seg[2].getmax(1,0,2*inf,0,a[i]-1)+1 , seg[1].getmax(1,0,2*inf,0,a[i]-d-1)+1);
 
		seg[0].update(1,0,2*inf,a[i],dp[i][0]);
		seg[1].update(1,0,2*inf,a[i],dp[i][1]);
		seg[2].update(1,0,2*inf,a[i],dp[i][2]);
 
		res=max(res,max(dp[i][0],max(dp[i][1],dp[i][2])));
	}
 
	return res;
}
 
int main(){
 
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
 
	cin>>n>>x;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		a[i]+=inf;
	}
 
	cout<<max(solve(-x),solve(x))<<"\n";
 
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 1 ms 344 KB Output is correct
17 Correct 0 ms 344 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 1 ms 344 KB Output is correct
17 Correct 0 ms 344 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 3 ms 1884 KB Output is correct
20 Correct 3 ms 1884 KB Output is correct
21 Correct 3 ms 1884 KB Output is correct
22 Correct 3 ms 2136 KB Output is correct
23 Correct 3 ms 1116 KB Output is correct
24 Correct 2 ms 1116 KB Output is correct
25 Correct 2 ms 348 KB Output is correct
26 Correct 3 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 916 ms 178260 KB Output is correct
2 Correct 894 ms 178160 KB Output is correct
3 Correct 894 ms 178256 KB Output is correct
4 Correct 910 ms 178256 KB Output is correct
5 Correct 461 ms 97872 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 188 ms 51796 KB Output is correct
2 Correct 189 ms 51792 KB Output is correct
3 Correct 185 ms 51796 KB Output is correct
4 Correct 113 ms 28244 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 122 ms 4744 KB Output is correct
7 Correct 160 ms 36068 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 390 ms 96336 KB Output is correct
2 Correct 374 ms 96456 KB Output is correct
3 Correct 830 ms 178356 KB Output is correct
4 Correct 384 ms 98064 KB Output is correct
5 Correct 188 ms 9036 KB Output is correct
6 Correct 349 ms 16720 KB Output is correct
7 Incorrect 353 ms 16656 KB Output isn't correct
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 1 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 1 ms 344 KB Output is correct
17 Correct 0 ms 344 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 3 ms 1884 KB Output is correct
20 Correct 3 ms 1884 KB Output is correct
21 Correct 3 ms 1884 KB Output is correct
22 Correct 3 ms 2136 KB Output is correct
23 Correct 3 ms 1116 KB Output is correct
24 Correct 2 ms 1116 KB Output is correct
25 Correct 2 ms 348 KB Output is correct
26 Correct 3 ms 348 KB Output is correct
27 Correct 916 ms 178260 KB Output is correct
28 Correct 894 ms 178160 KB Output is correct
29 Correct 894 ms 178256 KB Output is correct
30 Correct 910 ms 178256 KB Output is correct
31 Correct 461 ms 97872 KB Output is correct
32 Correct 188 ms 51796 KB Output is correct
33 Correct 189 ms 51792 KB Output is correct
34 Correct 185 ms 51796 KB Output is correct
35 Correct 113 ms 28244 KB Output is correct
36 Correct 0 ms 344 KB Output is correct
37 Correct 122 ms 4744 KB Output is correct
38 Correct 160 ms 36068 KB Output is correct
39 Correct 390 ms 96336 KB Output is correct
40 Correct 374 ms 96456 KB Output is correct
41 Correct 830 ms 178356 KB Output is correct
42 Correct 384 ms 98064 KB Output is correct
43 Correct 188 ms 9036 KB Output is correct
44 Correct 349 ms 16720 KB Output is correct
45 Incorrect 353 ms 16656 KB Output isn't correct
46 Halted 0 ms 0 KB -