Pagini recente » Istoria paginii utilizator/emilia23 | Cod sursa (job #2068264) | Cod sursa (job #75069) | Istoria paginii utilizator/rarespoinaru | Cod sursa (job #2085352)
#include <cstdio>
using namespace std;
int n,v[100003],best[100003],max,poz[100003],loc;
FILE * f1 = fopen("scmax.in","r");
FILE * f2 = fopen("scmax.out","w");
void Read()
{
fscanf(f1,"%i",&n);
for(int i=1;i<=n;i++)
fscanf(f1,"%i",&v[i]);
}
void Subsir()
{
max = 1;
best[n] = 1;
poz[n] = -1;
for(int i=n-1;i>=1;i--)
{
best[i] = 1;
poz[i] = -1;
for(int j=i+1;j<=n;j++)
{
if(v[i] < v[j] && best[i] < best[j] + 1)
{
best[i] = best[j] + 1;
poz[i] = j;
}
}
if(best[i] > max)
{
max = best[i];
loc = i;
}
}
}
int main()
{
Read();
Subsir();
fprintf(f2,"%i\n",max);
while(loc != -1)
{
fprintf(f2,"%i ",v[loc]);
loc = poz[loc];
}
return 0;
}