0
已解决
苏绅
新手光能
新手光能
题目链接: 酷町堂:8160
- #include <bits/stdc++.h> using namespace std; int a[10001],n=1,f[10001]; bool ok[10001]; int main() { while(scanf("%d",&a[n])!=EOF) n++; n--; for(int i=1; i<=n; i++) { for(int j=i; j>=1; j--) { if(a[i]<=a[j]) { f[i]=max(f[i],f[j]+1); } } } int mx=0; for(int i=1; i<=n; i++) { //cout<<"### "<<f[i]<<"\n"; mx=max(mx,f[i]); } printf("%d\n",mx); int mn=INT_MAX,ans=0,sum=0; while(1) { sum++; mn=INT_MAX; for(int i=1; i<=n; i++) { if(!ok[i]&&a[i]<=mn) { mn=min(a[i],mn); ok[i]=1; ans++; //cout<<"### "<<a[i]<<" ans="<<ans<<" sum="<<sum<<endl; } } if(ans==n) { printf("%d\n",sum); return 0; } } return 0; }