Pagini recente » Cod sursa (job #1171309) | Cod sursa (job #2647057) | Cod sursa (job #3240512) | Cod sursa (job #1171200) | Cod sursa (job #2759139)
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
const int N = 1e5 + 1;
int n, v[N], dp[N], k, num[N], ans[N], aux;
int main(){
f >> n;
for(int i = 0; i < n; i++)
f >> v[i];
f.close();
for(int i = 0; i < n; i++){
if(v[i] > num[k]){
num[++k] = v[i];
dp[i] = k;
}else{
for(int j = 1; j <= k; j++){
if(v[i] <= num[j]){
num[j] = v[i];
dp[i] = j;
j = k;
}
}
}
}
g << k << '\n';
aux = k;
for(int i = n; i >= 0; i--){
if(dp[i] == aux)
ans[aux--] = v[i];
}
for(int i = 1; i <= k; i++)
g << ans[i] << ' ';
g.close();
}