Pagini recente » Cod sursa (job #1270789) | Cod sursa (job #1219763) | Cod sursa (job #2555788) | Cod sursa (job #1797508) | Cod sursa (job #886482)
Cod sursa(job #886482)
#include<fstream>
#include<string.h>
using namespace std;
const int MAX_N = 100002;
const int INF = 0x3f3f3f3f;
int N, Max, p;
int a[ MAX_N ], st[ MAX_N ];
inline int bs(int x)
{
int left = 0, mid = 0, right = Max;
while(left <= right)
{
mid = (left + right) / 2;
if(st[mid] >= x)
right = mid - 1;
else left = mid + 1;
}
return left;
}
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
f >> N;
for(int i = 1; i <= N; ++i)
f >> a[i];
memset(st, INF, sizeof(st));
st[0] = 0;
for(int i = 1; i <= N; ++i)
{
p = bs(a[i]);
if(a[i] < st[p])
st[p] = a[i];
if(p > Max)
Max = p;
}
g << Max << '\n';
for(int i = 1; i < Max; ++i)
g << st[i] << " ";
g << st[Max] << '\n';
f.close();
g.close();
}