Nu exista pagina, dar poti sa o creezi ...
Cod sursa(job #486166)
Utilizator | Data | 20 septembrie 2010 18:01:57 | |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.86 kb |
#include <fstream>
#include <vector>
using namespace std;
const char InFile[]="scmax.in";
const char OutFile[]="scmax.out";
const int MaxN=100010;
ifstream fin(InFile);
ofstream fout(OutFile);
int v[MaxN],best[MaxN],ind[MaxN],n;
vector<int> sir;
int main()
{
fin>>n;
best[0]=0;
v[0]=0;
for(register int i=1;i<=n;++i)
{
fin>>v[i];
for(register int j=0;j<i;++j)
{
if(v[i]>v[j])
{
if(best[i]<best[j])
{
best[i]=best[j];
ind[i]=j;
}
}
}
++best[i];
}
int vmax=0;
int imax=0;
for(register int i=1;i<=n;++i)
{
if(vmax<best[i])
{
vmax=best[i];
imax=i;
}
}
fin.close();
while(imax!=0)
{
sir.push_back(v[imax]);
imax=ind[imax];
}
fout<<vmax<<"\n";
for(register int i=(int)sir.size()-1;i>=0;--i)
{
fout<<sir[i]<<" ";
}
fout.close();
return 0;
}