200分TLE求调
查看原帖
200分TLE求调
847083
yituoxianyu楼主2023/5/4 17:29
#include<bits/stdc++.h>
using namespace std;
int n,ans = 1,t,a[100010],d[100010],f[100010];
int main()
{
    while(scanf("%d",&a[++n]) != EOF);
    n--;
    for(int i = 1;i <= n;i++)
    {
    	f[i] = 1;
    	for(int j = t;j > 0;j--)
    	{
    		if(a[i] <= a[d[j]]){
    			f[i] = f[d[j]] + 1;
    			break;
    		}
    	}
    	t = max(t,f[i]);
    	d[f[i]] = i;
    	ans = max(ans,f[i]);
    }
    cout << ans << endl;
    ans = 1;
    t = 0;
    for(int i = 1;i <= n;i++){
    	f[i] = 1;
    	for(int j = t;j > 0;j--)
    	{
    		if(a[i] > a[d[j]]){
    			f[i] = f[d[j]] + 1;
    			break;
    		}
    	}
    	t = max(t,f[i]);
    	d[f[i]] = i;
    	ans = max(ans,f[i]);
    }
    cout << ans;
    return 0;
}
2023/5/4 17:29
加载中...