Pagini recente » Cod sursa (job #1321160) | Monitorul de evaluare | Cod sursa (job #1560689) | Cod sursa (job #2469576) | Cod sursa (job #691172)
Cod sursa(job #691172)
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
typedef struct result{
int lung;
char s[1000];
};
int n;
long v[100003];
result calcul_subsir(int minim, int pos){
if(pos >= n){
result a;
a.lung = 0;
strcpy(a.s, " ");
return a;
}
result res1;
result res2 = calcul_subsir(minim, pos + 1);
if(v[pos] > minim){
res1 = calcul_subsir(v[pos], pos + 1);
res1.lung ++;
char nr[1000];
sprintf(nr, "%d", v[pos]);
strcat(nr, " ");
strcat(nr, res1.s);
strcpy(res1.s, nr);
if(res1.lung > res2.lung)
return res1;
}
return res2;
}
int main(){
fin >> n;
for(int i = 0; i < n; i++){
fin >> v[i];
}
result res = calcul_subsir(-1, 0);
fout << res.lung << endl << res.s;
return 0;
}