Submission #1322397

#TimeUsernameProblemLanguageResultExecution timeMemory
1322397neonglitchFinancial Report (JOI21_financial)C++20
14 / 100
4094 ms6636 KiB
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int N=3e5+10;
int a[N],dp[N];
int val[N]; // all zero initially
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n,d;
	cin>>n>>d;
	vector<pair<int,int>> ord;
	for(int i=1;i<=n;i++)cin>>a[i],ord.push_back({a[i],-i}),dp[i]=1;
	sort(begin(ord),end(ord));
	
	for(auto [x,i]:ord)
	{
		i=-i;
		val[i]=1;
		int mx=0,cu=0;
		for(int j=i-1;j>=1;j--)
		{
			if(val[j]==0)
			{
				cu++;
			}
			else{
				mx=max(mx,cu);
				if(mx>=d)
				{
					break;
				}
				if(a[j]<a[i])
				{
					// cout<<"updating "<<i<<' '<<j<<endl;
					dp[i]=max(dp[i],dp[j]+1);
				}
			}
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++)
	{
		ans=max(ans,dp[i]);
	}
	cout<<ans<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...