Pagini recente » Cod sursa (job #153795) | Cod sursa (job #2104360) | Cod sursa (job #1734301) | Cod sursa (job #2298871) | Cod sursa (job #719754)
Cod sursa(job #719754)
#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=1;
while(a[i]>=a[k] && k<=sol[j][0]) k++;
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;
}