Submission #99177

# Submission time Handle Problem Language Result Execution time Memory
99177 2019-03-01T14:01:35 Z bharat2002 Global Warming (CEOI18_glo) C++14
17 / 100
80 ms 6776 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, l2;
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;l2=len;
	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);
	}
	assert(len==l2);
	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 80 ms 6772 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 21 ms 1920 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 38 ms 3608 KB Output is correct
2 Correct 35 ms 3584 KB Output is correct
3 Correct 76 ms 6776 KB Output is correct
4 Correct 55 ms 6772 KB Output is correct
5 Correct 25 ms 3556 KB Output is correct
6 Correct 51 ms 6392 KB Output is correct
7 Correct 47 ms 6528 KB Output is correct
8 Correct 29 ms 3576 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 -