Pagini recente » Cod sursa (job #555648) | Cod sursa (job #2087255) | Cod sursa (job #2474934) | Cod sursa (job #2307825) | Cod sursa (job #812802)
Cod sursa(job #812802)
#include<iostream>
#include<fstream>
using namespace std;
#define MAX_N 1500
#define maxim(a,b) ((a>b)? a:b)
int N;// lungimile celor doua siruri
int a[MAX_N];
int lungime[MAX_N];
int poz_max, maxim;
ofstream g("scmax.out");
void read(){
ifstream f("scmax.in");
f >> N;
for(int i=1; i<=N; i++){
f >> a[i];
}
}
void det_maxim(){
lungime[N] = 1;
for(int i=N-1; i>=1; i--){
for(int j=i+1; j<=N; j++){
if(a[i] < a[j])
if(lungime[i]< lungime[j])
lungime[i] = lungime[j]+1;
}
if(lungime[i] == 0)
lungime[i] ++;
if(maxim < lungime[i]){
maxim = lungime[i];
poz_max = i;
}
}
}
void afis(int poz, int max){
if(poz <=N && max!=0 ){
if(lungime[poz] == max){
g << a[poz]<< " ";
afis(poz+1, max-1);
}else afis(poz+1, max);
}
}
int main(){
read();
det_maxim();
g << maxim <<'\n';
afis(poz_max, maxim);
return 0;
}