Pagini recente » Cod sursa (job #1372135) | Cod sursa (job #2885115) | Cod sursa (job #384059) | Cod sursa (job #2356089) | Cod sursa (job #2037025)
#include <iostream>
#include <fstream>
#define DN 100002
using namespace std;
int n, e, v[DN], eml[DN], eeml[DN], pe[DN], iue[DN], af[DN] ,mx, imx, l, r, mid;
int main()
{
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
fin >> n;
eeml[0] = 1;
for(int i = 1; i <= n; i++)
{
fin >> v[i];
e = v[i];
l = 0;
r = i - 1;
while(l < r)
{
mid = (l + r + 1) / 2;
if(eml[mid] >= e|| !eeml[mid])
r = mid - 1;
else
l = mid;
}
//cout << l << "\n";
if(eml[l + 1] > e || !eeml[l + 1])
{
eml[l + 1] = e;
iue[l + 1] = i;
eeml[l + 1] = 1;
pe[i] = iue[l];
if(l + 1 > mx)
{
mx = l + 1;
imx = i;
}
}
}
/*for(int i = 1; i <= n; i++)
fout << eml[i] << " ";
fout << "\n";*/
fout << mx << "\n";
for(int i = imx, j = mx; j; i = pe[i], j--)
af[j] = v[i];
for(int i = 1; i <= mx; i++)
fout << af[i] << " ";
return 0;
}