Pagini recente » Cod sursa (job #1214181) | Cod sursa (job #1591123) | Cod sursa (job #2961845) | Cod sursa (job #1610895) | Cod sursa (job #2022230)
#include <iostream>
#include <fstream>
using namespace std;
int best[5005],nxt[5005],v[5005];
int i,j,n,mn;
int main()
{
ifstream f("subsir2.in");
ofstream g("subsir2.out");
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
v[0]=-(1<<30);
for(i=n;i>=0;i--)
{
mn=(1<<30);
for(j=i+1;j<=n;j++)
{
if(best[j]>=best[i]&&v[j]<mn&&v[j]>=v[i])
best[i]=best[j],nxt[i]=j;
if(v[j]<mn&&v[j]>=v[i])
mn=v[j];
}
if(!nxt[i])
nxt[i]=n+1;
best[i]++;
}
g<<best[0]-1<<'\n';
i=0;
while(i<=n)
{
if(nxt[i]<=n) g<<nxt[i]<<' ';
i=nxt[i];
}
return 0;
}