Pagini recente » Cod sursa (job #2670084) | Cod sursa (job #1273914) | Cod sursa (job #2275771) | Cod sursa (job #1296691) | Cod sursa (job #1897250)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,i,j,maxim,poz,ok;
struct valoare
{
int nr,cnt,ant;
};
valoare el;
vector <valoare> a;
void afis(int v)
{
if(a[v].ant&&a[v].ant!=-1||(a[v].ant==0&&a[0].nr<a[v].nr))
maxim++,afis(a[v].ant);
if(maxim) {g<<maxim+1<<'\n';maxim=0;}
g<<a[v].nr<<" ";
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>el.nr,a.push_back(el);
a[0].cnt=1;
a[0].ant=-1;
for(i=1;i<n;i++)
{
ok=0;
for(j=i-1;j>=0;j--)
{
if(a[j].nr<a[i].nr)
if(a[i].cnt<a[j].cnt+1)
{
a[i].cnt=a[j].cnt+1,a[i].ant=j;
if(a[i].cnt>maxim) poz=i;
ok=1;
}
}
if(!ok) a[i].cnt=1;
}
//for(i=0;i<n;i++)
// g<<a[i].nr<<" "<<a[i].cnt<<" "<<a[i].ant<<'\n';
afis(poz);
return 0;
}