Pagini recente » Diferente pentru preoji/clasament/9 intre reviziile 35 si 21 | Diferente pentru runda/124475824691316 intre reviziile 2 si 1 | Diferente pentru preoji/clasament/9 intre reviziile 29 si 30 | Diferente pentru preoji/clasament/9 intre reviziile 35 si 23 | Cod sursa (job #456876)
Cod sursa(job #456876)
#include<fstream>
using namespace std;
int i,j,n,l[5001],a[5001],k,max1,t,min1;
int main()
{
ifstream f("subsir2.in");
ofstream g("subsir2.out");
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
l[n]=1;
for(k=n-1;k>=0;k--)
{
for(j=k+1;j<=n;j++)
if(a[k]<=a[j]&&l[k]<=l[j]+1)
l[k]=l[j]+1;
}
max1=l[1];
t=1;
for(j=2;j<=n;j++)
if(l[j]>max1)
{
max1=l[j];
t=j;
}
g<<max1<<"\n"<<t<<" ";
for(i=t+1;i<=n;i++)
if(a[i]>a[t]&&l[i]==l[t]-1)
{
min1=i;
for(k=i+1;k<=n;k++)
if(l[k]==l[t]-1&&a[k]<a[i])
min1=k;
g<<min1<<" ";
l[t]--;
}
return 0;
}