Mai intai trebuie sa te autentifici.
Cod sursa(job #2485846)
Utilizator | Data | 2 noiembrie 2019 10:02:15 | |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 65 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.77 kb |
#include <iostream>
#include <fstream>
using namespace std;
int e[100000], p[100000], k=0, l=0;
int cautbin (int x)
{
int step,i;
for (step=1; step<k; step <<= 1);
for (i=k; step; step >>= 1)
if (i-step>=0&&e[i-step]>=x)
i-=step;
return i;
}
int main()
{
int n,x;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
fin>>n;
for (int i=0; i<n; i++)
{
fin>>x;
if (x>e[k])
{
e[++k]=x;
p[++l]=k;
}
else
{
int poz=cautbin(x);
e[poz]=x;
p[++l]=poz;
}
}
fout<<k<<"\n";
for (int i=1; i<=k; i++)
fout<<e[i]<<" ";
return 0;
}