```c
#include<cstdio>
#include<iostream>
using namespace std;
int paper[5005],opt[5005],max,pr[5005],max1=0,best,num[5005];
int main()
{
int N,i,j,tot=0;
scanf("%d",&N);
for(i=1;i<=N;i++)
scanf("%d",&paper[i]);
for(i=1;i<=N;i++)
{
for(j=i-1;j>=1;j--)
{
if(paper[j]>paper[i])
{
if(opt[j]>opt[best])
best=j;
}
}
pr[i]=best;
for(j=i-1;j>=1;j--)
{
if(opt[j]==opt[best])
num[i]++;
}
opt[i]=opt[pr[i]]+1;
if(opt[i]>max1)max1=opt[i];
best=0;
}
for(i=1;i<=N;i++)
{
if(opt[i]==max1)tot+=num[i];
}
printf("%d %d",max1,tot);
}
```
by Citus_Neru_index @ 2018-10-04 10:58:57
什么题
by emmmmmmmmm @ 2018-10-04 11:23:56
P1108
by Citus_Neru_index @ 2018-10-04 14:09:14
@[emmmmmmmmm](/space/show?uid=87572)
by Citus_Neru_index @ 2018-10-04 14:09:38
没有去重,opt数组相同且数值相同的下标i的num值要赋一个0
by danefishhh @ 2019-07-24 15:04:13
@[Accelerator_zhang](/space/show?uid=93356)
by danefishhh @ 2019-07-24 15:05:51
@[danefishhh](/space/show?uid=54673)
谢谢了,我调下看看
by Citus_Neru_index @ 2019-07-25 11:26:15