比赛 20200605 评测结果 AAAAAAAAAA
题目名称 低价购买 最终得分 100
用户昵称 数声风笛ovo 运行时间 0.282 s
代码语言 C++ 内存使用 13.71 MiB
提交时间 2020-06-05 20:59:20
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int maxn=5e3+10;
int n,f1[maxn],f2[maxn],a[maxn],ans1=1,ans2=0;
int main(){
   	freopen("djgm.in","r",stdin);
   	freopen("djgm.out","w",stdout);
   	scanf("%d",&n);
   	for(int i=1;i<=n;i++){
   		scanf("%d",&a[i]);
   		f1[i]=f2[i]=1;
   		for(int j=1;j<i;j++){
   			if(a[j]>a[i]){
   				if(f1[i]<f1[j]+1){
   					f1[i]=f1[j]+1;
   					f2[i]=f2[j];
   				}
				else{
   					if(f1[i]==f1[j]+1){
    					f2[i]+=f2[j];
   					} 
    			}
    		}
			else{
				if(a[i]==a[j]){
					f2[i]=0;
				}
			}
    	}
    	ans1=max(ans1,f1[i]);
    }
   	for(int i=1;i<=n;i++){
	    if(f1[i]==ans1){
			ans2+=f2[i];
	    }
	}
   	printf("%d %d\n",ans1,ans2);
   	return 0;
    }