Pagini recente » Cod sursa (job #1997356) | Cod sursa (job #1742849) | Cod sursa (job #59976) | Cod sursa (job #1576895) | Cod sursa (job #2364432)
#include<bits/stdc++.h>
#define INF 2000000001
using namespace std;
int SCLM[100005], sclm[100005], sir[100005], v[100005], pred, curent, i, n, m, mij, st, dr, poz, k;
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
f >> n;
for(i = 1; i <= n; i ++)
f >> v[i];
for(i = 1; i <= n; i ++)
{
if(v[i] > sir[k])sir[++k] = v[i], sclm[i] = k;
else
{
st = 1;
dr = k;
poz = 0;
while(st <= dr)
{
mij = (st + dr) / 2;
if(sir[mij] >= v[i])poz = mij, dr = mij - 1;
else st = mij + 1;
}
sir[poz] = v[i];
sclm[i] = poz;
}
}
pred = INF;
curent = k + 1;
g << k << "\n";
for(i = n; i > 0; i --)
if(sclm[i] == curent - 1 && v[i] < pred)
{
curent--;
SCLM[curent] = v[i];
pred = v[i];
}
for(i = 1; i <= k; i ++)
g << SCLM[i] << " ";
return 0;
}