Cod sursa(job #368226)
Utilizator | Data | 24 noiembrie 2009 10:50:16 | |
---|---|---|---|
Problema | Floyd-Warshall/Roy-Floyd | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.56 kb |
#include<iostream>
using namespace std;
int main()
{int a[100],l[100],ante[100],maxi,i,j,n,p;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
l[n]=1;
ante[n]=-1;
for(i=n-1;i>=1;--i)
{ante[i]=-1;
l[i]=1;
for(j=i+1;j<=n;++j)
if(a[i]<=a[j] && l[i]<l[j]+1)
{
l[i]=l[j]+1;
ante[i]=j;
}
}
maxi=0;
for(i=1;i<=n;i++)
{if(l[i]>maxi)
maxi=i;
}
cout<<l[maxi]<<'\n';
while(maxi!=-1)
{cout<<a[maxi]<<" ";
maxi=ante[maxi];
}
return 0;
}