Pagini recente » Cod sursa (job #2939012) | Cod sursa (job #2454205) | Cod sursa (job #277394) | Cod sursa (job #1703272) | Cod sursa (job #793410)
Cod sursa(job #793410)
#include<fstream>
using namespace std;
ifstream f("subsir2.in");
ofstream g("subsir2.out");
int maxi,poz,mini,i,j,n,a[5001],l[5001],p[5001];
int main()
{f>>n;
for(i=1;i<=n;++i)
f>>a[i];
a[n+1]=888888888;
for(i=n;i;--i)
{maxi=10000;
mini=888888888;
for(j=i+1;j<=n+1;++j)
if(a[i]<=a[j])
{if(a[j]<mini&&l[j]<maxi)
{maxi=l[j];
poz=j;
}
else
if(l[j]==maxi)
if(a[j]<a[poz])
{poz=j;
}}
l[i]=maxi+1;
if(l[i]==10001)
l[i]=1;
p[i]=poz;
}
mini=0;
for(i=1;i<=n;++i)
if(l[i]>mini)
{for(j=1;j<i;++j)
if(a[i]>=a[j])
break;
if(j>=i)
{mini=l[i];
poz=i;
}
}
else
if(l[i]==mini)
if(a[i]<a[poz])
{for(j=1;j<i;++j)
if(a[i]>=a[j])
break;
if(j>=i)
poz=i;
}
g<<mini<<'\n';
while(poz!=n+1)
{g<<poz<<' ';
poz=p[poz];
}
g<<'\n';
return 0;
}