Pagini recente » Borderou de evaluare (job #1165362) | Cod sursa (job #3279132) | Cod sursa (job #995617) | Cod sursa (job #3165913) | Cod sursa (job #523410)
Cod sursa(job #523410)
# include <fstream>
using namespace std;
int n, Q[100100], cit, nr;
int cb (int in, int sf, int find){
int ret = 0;
while (in <= sf){
int m = (in + sf) >> 1;
if (Q[m] < find){
ret = m;
in = m + 1;
}
else
sf = m - 1;
}
return (ret > 0 ? ret + 1 : 1);
}
int main (){
std :: ifstream f ("scmax.in");
std :: ofstream g ("scmax.out");
f >> n;
for (int i = 1; i <= n; ++i){
f >> cit;
int val = cb (1, nr, cit);
Q[val] = cit;
if (nr < val) nr = val;
}
g << nr << '\n';
for (int i = 1; i <= nr; ++i)
g << Q[i] << ' ';
g.close ();
return 0;
}