#include<iostream>
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<queue>
#include<algorithm>
using namespace std;
int N,a[5000+10],cnt[5000+10],len[5000+10];
int main()
{
while(scanf("%d",&N)!=EOF){
for(int i=0;i<N;i++)
scanf("%d",&a[i]);
memset(cnt,0,sizeof(cnt));
memset(len,0,sizeof(len));
int ans=0;
for(int i=0;i<N;i++){
cnt[i]=len[i]=1;
for(int j=i-1;j>=0;j--){
if( a[j]<a[i])continue;
if(a[j]==a[i] ){
if( len[j]==len[i] ){
if(len[i]!=1)
cnt[j]+=cnt[i];
len[i]=1;
cnt[i]=0;
}
else if(len[j]>len[i]){
cnt[j]=0;
}
break;
}
else {
if( len[j]+1>len[i]){
len[i]=len[j]+1;
cnt[i]=cnt[j];
}
else if( len[j]+1==len[i])
cnt[i]+=cnt[j];
}
}
ans=max(ans,len[i]);
}
int num=0;
for(int i=0;i<N;i++){
printf("%d %d %d \n",a[i],len[i],cnt[i]);
if(len[i]==ans)
num+=cnt[i];
}
printf("%d %d\n",ans,num);
}
return 0;
}
posted on 2009-07-14 21:05
iyixiang 阅读(118)
评论(0) 编辑 收藏 引用 所属分类:
fojpojzojhoj^^^^