답안 #1094102

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1094102 2024-09-28T12:20:08 Z alexander707070 Global Warming (CEOI18_glo) C++14
58 / 100
924 ms 179064 KB
#include<bits/stdc++.h>
#define MAXN 200007
using namespace std;
 
const long long 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,3*inf,0,a[i]-1)+1;
		dp[i][1]=max(seg[1].getmax(1,0,3*inf,0,a[i]-1)+1 , seg[0].getmax(1,0,3*inf,0,a[i]+d-1)+1);
		dp[i][2]=max(seg[2].getmax(1,0,3*inf,0,a[i]-1)+1 , seg[1].getmax(1,0,3*inf,0,a[i]-d-1)+1);
 
		seg[0].update(1,0,3*inf,a[i],dp[i][0]);
		seg[1].update(1,0,3*inf,a[i],dp[i][1]);
		seg[2].update(1,0,3*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 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 600 KB Output is correct
7 Correct 0 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 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 600 KB Output is correct
7 Correct 0 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 1 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 600 KB Output is correct
7 Correct 0 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 1 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 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 4 ms 1884 KB Output is correct
22 Correct 4 ms 1884 KB Output is correct
23 Correct 3 ms 1252 KB Output is correct
24 Correct 4 ms 1112 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 924 ms 179044 KB Output is correct
2 Correct 868 ms 179028 KB Output is correct
3 Correct 853 ms 179028 KB Output is correct
4 Correct 878 ms 178968 KB Output is correct
5 Correct 490 ms 98400 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 191 ms 52012 KB Output is correct
2 Correct 199 ms 52072 KB Output is correct
3 Correct 195 ms 52052 KB Output is correct
4 Correct 132 ms 28244 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 146 ms 4548 KB Output is correct
7 Correct 148 ms 36400 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 378 ms 96848 KB Output is correct
2 Correct 383 ms 96852 KB Output is correct
3 Correct 851 ms 179064 KB Output is correct
4 Correct 421 ms 98476 KB Output is correct
5 Correct 202 ms 9040 KB Output is correct
6 Correct 352 ms 16720 KB Output is correct
7 Incorrect 351 ms 16652 KB Output isn't correct
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 1 ms 344 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 600 KB Output is correct
7 Correct 0 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 1 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 1 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 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 4 ms 1884 KB Output is correct
22 Correct 4 ms 1884 KB Output is correct
23 Correct 3 ms 1252 KB Output is correct
24 Correct 4 ms 1112 KB Output is correct
25 Correct 2 ms 348 KB Output is correct
26 Correct 3 ms 348 KB Output is correct
27 Correct 924 ms 179044 KB Output is correct
28 Correct 868 ms 179028 KB Output is correct
29 Correct 853 ms 179028 KB Output is correct
30 Correct 878 ms 178968 KB Output is correct
31 Correct 490 ms 98400 KB Output is correct
32 Correct 191 ms 52012 KB Output is correct
33 Correct 199 ms 52072 KB Output is correct
34 Correct 195 ms 52052 KB Output is correct
35 Correct 132 ms 28244 KB Output is correct
36 Correct 0 ms 344 KB Output is correct
37 Correct 146 ms 4548 KB Output is correct
38 Correct 148 ms 36400 KB Output is correct
39 Correct 378 ms 96848 KB Output is correct
40 Correct 383 ms 96852 KB Output is correct
41 Correct 851 ms 179064 KB Output is correct
42 Correct 421 ms 98476 KB Output is correct
43 Correct 202 ms 9040 KB Output is correct
44 Correct 352 ms 16720 KB Output is correct
45 Incorrect 351 ms 16652 KB Output isn't correct
46 Halted 0 ms 0 KB -