Pagini recente » Cod sursa (job #2888647) | Cod sursa (job #238878) | Cod sursa (job #1863736) | Cod sursa (job #1198024) | Cod sursa (job #1116110)
#include <fstream>
#define lmax 5001
#define inf 100000000
using namespace std;
ifstream f("subsir2.in");
ofstream g("subsir2.out");
long long i,j,n,mi=inf,mii,sol,ma,maa=inf,poz,nr;
long long a[lmax],b[lmax],ok[lmax],urm[lmax];
int main()
{
f>>n;
for (i=1;i<=n;i++)
{
f>>a[i];
if (a[i]<mi)
{
mi=a[i];
ok[i]=1;
}
}
sol=lmax;
for (i=n;i>=1;i--)
{
mi=inf;
b[i]=inf;
urm[i]=-1;
for (j=i+1;j<=n;j++)
{
if (a[i]<=a[j])
{
if (a[j]<mi && (b[i]>b[j]+1 || (b[i]==b[j]+1 && a[j]<a[urm[i]])))
{
urm[i]=j;
b[i]=b[j]+1;
}
if (a[j]<mi)
mi=a[j];
}
}
if (b[i]==inf)
{
b[i]=1;
urm[i]=i;
}
if(ok[i]&&(sol>b[i]||(sol==b[i]&&a[i]<a[poz])))
{
poz=i;
sol=b[i];
}
}
g<<sol<<'\n';
while (1)
{
g<<poz<<" ";
if (urm[poz]==poz)
break;
poz=urm[poz];
}
f.close();
g.close();
}