Submission #99176

# Submission time Handle Problem Language Result Execution time Memory
99176 2019-03-01T14:00:07 Z bharat2002 Global Warming (CEOI18_glo) C++14
17 / 100
93 ms 8696 KB
/*input
8 10
7 3 5 12 2 7 3 4
*/
#include<bits/stdc++.h>
using namespace std;
const int N=2e5 + 100;
const int mod=1e9 + 7;
#define int long long
const int inf=1e18;
#define pii pair<int, int>
#define f first
#define s second 
#define mp make_pair
stack< pii > updatestolis;int lis[N], lds[N], arr[N], n, x, ans;
void clis()
{
	int len=1;lis[0]=0;
	for(int i=1;i<=n;i++)
	{
		pii add;
		if(arr[i]<lis[1])
		{
			add=mp(1, lis[1]);
			lis[1]=arr[i];
		}
		else if(arr[i]>lis[len-1])
		{
			add=mp(len, 1e17);lis[len++]=arr[i];
		}
		else
		{
			int low=1, high=len-1;
			while(low<high)
			{
				int mid=(low+high)>>1;
				if(lis[mid]>=arr[i]) high=mid;
				else low=mid+1;
			}
			add=mp(low, lis[low]);lis[low]=arr[i];
		}
		updatestolis.push(add);
	}
	ans=len-1;
	for(int i=len;i<=n;i++) lis[i]=1e17;
}
void clds()
{
	int len=1;lds[0]=lds[1]=1e17;
	for(int i=n;i>=1;i--)
	{
		int add;
		if(arr[i]>lds[1])
		{
			lds[1]=arr[i];add=1;
		}
		else if(arr[i]<lds[len-1])
		{
			lds[len++]=arr[i];add=len-1;
		}
		else
		{
			int low=1, high=len-1;
			while(low<high)
			{
				int mid=(low+high)>>1;
				if(lds[mid]<=arr[i]) high=mid;
				else low=mid+1;
			}
			lds[low]=arr[i];add=low;
		}
		pii temp=updatestolis.top();updatestolis.pop();
		lis[temp.f]=temp.s;
		int low=1, high=n;
		while(low<high)
		{
			int mid=(low+high+1)/2;
			if(lis[mid] - arr[i]<x) low=mid;
			else high=mid-1;
		}		
//		cout<<low<<" "<<add<<endl;
		ans=max(ans, low + add);
	}
	for(int i=len;i<=n;i++) lis[i]=1e17;
}
signed main()
{
	ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
	cin>>n>>x;
	for(int i=1;i<=n;i++)
	{
		cin>>arr[i];
	}
	clis();clds();cout<<ans;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Incorrect 2 ms 384 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Incorrect 2 ms 384 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Incorrect 2 ms 384 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 93 ms 8668 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 19 ms 2456 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 47 ms 4600 KB Output is correct
2 Correct 38 ms 4496 KB Output is correct
3 Correct 74 ms 8696 KB Output is correct
4 Correct 49 ms 7928 KB Output is correct
5 Correct 34 ms 4104 KB Output is correct
6 Correct 46 ms 7544 KB Output is correct
7 Correct 56 ms 8408 KB Output is correct
8 Correct 33 ms 4476 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Incorrect 2 ms 384 KB Output isn't correct
4 Halted 0 ms 0 KB -