Pagini recente » Cod sursa (job #588563) | Cod sursa (job #1309496) | Infoarena Monthly 2012, Runda 9 - Clasament | Cod sursa (job #760394) | Cod sursa (job #815444)
Cod sursa(job #815444)
#include<cstdio>
using namespace std;
const int LIM = 10005;
int v[LIM], p[LIM], q[LIM], lq=0, lp=0;
void print(FILE *out, int start, int x){
int i=start;
for(i=start; p[i]!=x; --i);
if(x-1>=1)
print(out, i-1, x-1);
fprintf(out, "%d ", v[i]);
}
int main(){
FILE *in=fopen("scmax.in","r"), *out=fopen("scmax.out","w");
int n; bool pp;
fscanf(in, "%d\n", &n);
for(int i=1; i<=n; ++i){
fscanf(in, "%d", &v[i]);
pp=false;
for(int j=1; j<=lq; ++j)
if(q[j]>=v[i]){
pp=true; q[j]=v[i]; ++lp; p[lp]=j;
}
if(!pp){
++lq; q[lq]=v[i]; ++lp; p[lp]=lq;
}
}
fprintf(out, "%d\n", lq);
print(out, lp, lq);
return 0;
}