Mai intai trebuie sa te autentifici.
Cod sursa(job #2085164)
Utilizator | Data | 9 decembrie 2017 19:35:01 | |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.01 kb |
#include <cstdio>
using namespace std;
int n,v[100003],best[100003];
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()
{
int max=-1,dubluri = 0;
best[1] = 0;
for(int i=2;i<=n;i++)
{
if(v[i] != v[i-1])
{
if(v[i] > v[i-1])
best[i] = best[i-1] + 1;
if(v[i] < v[i-1])
best[i] = 0;
}
else
{
best[i] = best[i-1];
dubluri ++;
}
}
for(int i=1;i<=n;i++)
{
if(max < best[i])
{
max = i;
}
}
fprintf(f2,"%i\n",best[max]+1);
for(int i=max-best[max]-dubluri;i<=max;i++)
{
if(v[i] != v[i-1])
fprintf(f2,"%i ",v[i]);
}
}
int main()
{
Read();
for(int i=1;i<=n;i++)
best[i] = 0;
Subsir();
return 0;
}