题面
T飞了
#include<bits/stdc++.h>
using namespace std;
int cnt,a[100005],x,f[100005],ans1,ans2=1,tmp,c[100005];
bool mak;
int main()
{
while(scanf("%d",&x)!=EOF) a[++cnt]=x;
priority_queue<int,vector<int>,greater<int> > xg;
f[1]=1;
xg.push(0x7f7f7f7f);
for(int i=1;i<=cnt;i++)
{
for(int j=1;j<i;j++)
{
if(a[i]<=a[j]) f[i]=max(f[j]+1,f[i]);
else f[i]=max(f[i],1);
}
}
for(int i=1;i<=cnt;i++)
{
memset(c,0,sizeof c);
mak=0;
for(int j=1;j<=ans2;j++)
{
tmp=xg.top();
xg.pop();
c[++c[0]]=tmp;
if(tmp<a[i]) continue;
tmp=min(tmp,a[i]);
mak=1;
c[c[0]]=tmp;
break;
}
if(mak==0)
{
ans2++;
xg.push(a[i]);
}
for(int j=1;j<=c[0];j++) xg.push(c[j]);
}
for(int i=1;i<=cnt;i++) ans1=max(ans1,f[i]);
printf("%d\n",ans1);
printf("%d",ans2);
return 0;
}