Pagini recente » Cod sursa (job #2713299) | Cod sursa (job #2036855) | Monitorul de evaluare | Cod sursa (job #827310) | Cod sursa (job #3126930)
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fi=fopen("scmax.in","r");
FILE*fo=fopen("scmax.out","w");
int n,a[100001],L[100001],P[100001],p,l,pmax,lmax;
fscanf(fi,"%d",&n);
for(int i=1;i<=n;i++)
fscanf(fi,"%d",&a[i]);
for(int i=n;i>=1;i--)
{
p = i;
l = 0;
for(int j=i+1 ; j<=n ;j++)
if(a[i]<=a[j] && L[j]>l)
{
l = L[j];
p = j;
}
L[i] = l+1;
P[i] = p;
if(L[i] > lmax)
{
lmax = L[i];
pmax = i;
}
}
fprintf(fo,"%d\n",lmax);
p = pmax;
while(p != P[p])
{
fprintf(fo,"%d\n",p);
p = P[p];
}
fprintf(fo,"%d\n",p);
fclose(fi);
fclose(fo);
return 0;
///Sa se determine un subsir al lui a care este ordonat strict crescator si care are lungimea maxima.
///5
///24 12 15 15 19
///3
///12 15 19
/// 100p pbinfo, 15 infoarena
}