📄 1952.txt
字号:
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <memory.h>
using namespace std;
int a[5001];
int s[5001],n,m;
int ans[5001];
vector<int> h[5001];
void doit()
{
int i, j, k, answer;
scanf( "%d", &n );
for( i=0; i<n; i++ )
{
scanf( "%d", a+i );
a[i] = -a[i];
h[i].clear();
}
m = 0;
for( i=0; i<n; i++ )
{
j = lower_bound( s, s+m, a[i] ) - s;
s[j] = a[i];
if( j == m )m++;
if( j == 0 )ans[i] = 1;
else
{
ans[i] = 0;
for( k=0; k<h[j].size(); k++ )
if( a[ h[j][k] ] < a[i] )
ans[i] += ans[ h[j][k] ];
}
for( k=0; k<h[j+1].size(); k++ )
if( a[i] == a[ h[j+1][k] ] )
{
ans[ h[j+1][k] ] = ans[i];
break;
}
if( k == h[j+1].size() )
h[j+1].push_back( i );
}
answer = 0;
for( i=0; i<h[m].size(); i++ )
answer += ans[ h[m][i] ];
printf( "%d %d\n", m, answer );
}
int main()
{
doit();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -