Mai intai trebuie sa te autentifici.
Cod sursa(job #723372)
Utilizator | Data | 25 martie 2012 13:35:43 | |
---|---|---|---|
Problema | Subsir 2 | Scor | 25 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.2 kb |
#include <fstream>
using namespace std;
ifstream f ("subsir2.in");
ofstream g ("subsir2.out");
int n,a[5001],i,j=1,jj,k,sol[5001][5001],min1=5001,poz=0,min2,max1;
int main()
{
bool good;
f>>n;
for(i=1;i<=n;i++) f>>a[i];
f.close();
min1=a[1];
sol[1][0]=1; sol[1][1]=1;
for(i=2;i<=n;i++)
{
if(a[i]<min1) {sol[i][1]=i; sol[i][0]=1; min1=a[i]; continue;}
for(j=1;j<i;j++)
{
k=sol[j][0]+1;
good=1;
for(jj=sol[j][k-1]+1;jj<i;jj++) if(a[i]>=a[jj]) {good=0; break;}
if(good)
{
if(sol[i][0]<sol[j][0]+1 && sol[i][0]!=0) good=0;
else if(sol[i][0]==sol[j][0]+1)
{
for(jj=1;jj<=sol[i][0];jj++) if(a[sol[i][jj]]>a[sol[j][jj]]) {good=0; break;}
}
if(good)
{
for(jj=1;jj<k;jj++) sol[i][jj]=sol[j][jj];
sol[i][k]=i;
sol[i][0]=sol[j][0]+1;
}
}
}
}
g<<sol[n][0]<<"\n";
for(i=1;i<=sol[n][0];i++) g<<sol[n][i]<<" ";
g<<"\n";
g.close();
return 0;
}