Pagini recente » Cod sursa (job #1648996) | Cod sursa (job #1096375) | Cod sursa (job #213416) | Cod sursa (job #245993) | Cod sursa (job #2180452)
#include <bits/stdc++.h>
#define N 5000
#define inf 1000001
using namespace std;
ifstream fin("subsir2.in");
ofstream fout("subsir2.out");
int n, m, a[N+2], sis[N+2], nxt[N+2];
int main()
{
int i, j, minv, minsis, pozminsis;
fin>>n;
for(i=1; i<=n; i++) fin>>a[i];
sis[n]=1;
for(i=n-1; i>=1; i--)
{
minv=inf, minsis=inf;
for(j=i+1; j<=n; j++)
if(a[j]>=a[i] && a[j]<minv)
if(sis[j]<=minsis)
{
minsis=sis[j];
pozminsis=j;
minv=a[j];
}
if(minsis==inf) sis[i]=1;
else sis[i]=sis[pozminsis]+1, nxt[i]=pozminsis;
}
for(i=1; i<=n; i++) m=max(m,sis[i]);
fout<<m<<'\n';
minv=inf;
for(i=1; i<=n; i++)
if(sis[i]==m && a[i]<minv) minv=a[i], pozminsis=i;
i=pozminsis;
while(i)
{
fout<<i<<' ';
i=nxt[i];
}
return 0;
}