Pagini recente » Cod sursa (job #2903193) | Cod sursa (job #460694) | Cod sursa (job #621105) | Cod sursa (job #2199296) | Cod sursa (job #577794)
Cod sursa(job #577794)
#include<iostream.h>
#include<fstream.h>
long i,n,o,ok=0,z;
struct vector{long x,y;};
vector a[5000],x[5000];
void sort(int l,int r)
{long i,j,m;
vector y;
i=l;
j=r;
m=a[(l+r)/2].x;
while(i<=j)
{while(a[i].x<m)
i=i+1;
while(m<a[j].x)
j=j-1;
if(i<=j)
{y=a[i];
a[i]=a[j];
a[j]=y;
i=i+1;
j=j-1;}}
if(l<j)
sort(l,j);
if(r>i)
sort(i,r);}
void afis(int k)
{ok=1;
z=k;
}
int valid(long k)
{if(x[k].y<x[k-1].y&&k!=1)
return 0;
if(x[k].x<=x[k-1].x&&k!=1)
return 0;
return 1;}
void back(int k)
{long i;
if(ok==0)
for(i=1;i<=n;i++)
{x[k]=a[i];
if(valid(k)==1&&ok==0)
if(k==o)
afis(k);
else
back(k+1);}}
int main()
{ifstream f("subsir2.in");
ofstream h("subsir2.out");
f>>n;
for(i=1;i<=n;i++)
{f>>a[i].x;
a[i].y=i;}
sort(1,n);
for(o=n;o>=1;o--)
{back(1);
if(ok==1)
break;}
h<<z;
return 0;}