Pagini recente » Cod sursa (job #3177764) | Cod sursa (job #1246133) | Cod sursa (job #1566925) | Cod sursa (job #3150317) | Cod sursa (job #607425)
Cod sursa(job #607425)
#include<iostream.h>
#include<fstream.h>
int a[100000],n,o;
int search(int x,int y,int c)
{int m;
m=(x+y)/2;
if(x>y)
o=-1;
else
if(a[m]==c)
o=m;
else
if(a[m]<c)
search(m+1,y,c);
else
if(a[m]>c)
search(x,m-1,c);}
int search1(int x,int y,int c)
{int m;
m=(x+y)/2;
if(x>y)
o=-1;
else
if(a[m]<=c)
o=m;
else
if(a[m]<c)
search(m+1,y,c);
else
if(a[m]>c)
search(x,m-1,c);}
int search2(int x,int y,int c)
{int m;
m=(x+y)/2;
if(x>y)
o=-1;
else
if(a[m]>=c)
o=m;
else
if(a[m]<c)
search(m+1,y,c);
else
if(a[m]>c)
search(x,m-1,c);}
int main()
{ifstream f("cautbin.in");
ofstream h("cautbin.out");
f>>n;
for(int i=1;i<=n;i++)
f>>a[i];
int z,x,y;
f>>z;
for(int i=1;i<=3;i++)
{f>>x>>y;
if(x==0)
{search(1,n,y);
if(o==-1)
h<<o<<"\n";
else
for(int j=o;j<=n;j++)
if(a[j]!=y)
{h<<j-1<<"\n";
break;}}
else
if(x==1)
{search1(1,n,y);
if(o==-1)
h<<o<<"\n";
else
for(int j=o;j<=n;j++)
if(a[j]>y)
{h<<j-1<<"\n";
break;}}
else
if(x==2)
{search2(1,n,y);
if(o==-1)
h<<o<<"\n";
else
for(int j=o;j>=1;j=j-1)
if(a[j]<y)
{h<<j+1<<"\n";
break;}}
}
return 0;}