Pagini recente » Cod sursa (job #662316) | Cod sursa (job #1054883) | Cod sursa (job #1854351) | Cod sursa (job #413810) | Cod sursa (job #3154485)
#include <bits/stdc++.h>
using namespace std;
int n;
int dp[100000];
int v[100000];
ifstream in ("scmax.in");
ofstream out ("scmax.out");
int main()
{
in >> n;
for(int i = 0; i < n; i ++){
in >> v[i];
}
int dpPos = 1;
dp[0] = v[0];
for(int i = 1; i < n; i ++){
//cout << dp[dpPos - 1] << " " << v[i] << endl;
if(dp[dpPos - 1] < v[i]){
dp[dpPos] = v[i];
dpPos ++;
}
else{
int l = 0,r = dpPos - 1;
while(l != r){
int mij = (l + r) / 2;
if(v[i] >= dp[mij]){
l = mij + 1;
}
else if(v[i] <= dp[mij]){
r = mij;
}
cout << l << " " << r << endl;
}
dp[r] = v[i];
}
}
out << dpPos << endl;
for(int i = 0; i < dpPos; i ++){
out << dp[i] << " ";
}
return 0;
}