Pagini recente » Cod sursa (job #978888) | Cod sursa (job #620204) | Cod sursa (job #906534) | Cod sursa (job #2063022) | Cod sursa (job #1041696)
#include<iostream.h>
#include<fstream.h>
int v[10000],N,i,j;
int cauta0(int x)
{
int m;
i=1;j=N;
while(i<=j)
{
m=(i+j)/2;
if (v[m]<=x)
i=m+1;
else
j=m-1;
}
m=(i+j)/2;
if(v[m]>x)m --;
if(v[m]==x)
return m;
return -1;
}
int cauta1(int x)
{
int m;
i=1;j=N;
while(i<j)
{
m=(i+j)/2;
if(v[m]<=x)
i=m+1;
else
j=m;
}
m=(i+j)/2;
if(v[m]>x)--m;
return m;
}
int cauta2(int x)
{
int m;
i=1;j=N;
while(i<j)
{
m=(i+j)/2;
if(v[m]<x)
i=m+1;
else
j=m;
}
m=(i+j)/2;
if(v[m]<x)++m;
return m;
}
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int M,i,k,x;
f>>N;
for(i=1;i<=N;i++)
f>>v[i];
f>>M;
while(M)
{
f>>k>>x;
M--;
if(k==0)
g<<cauta0(x)<<"\n";
else if(k==1)
g<<cauta1(x)<<"\n";
else if(k==2)
g<<cauta2(x)<<"\n";
}
f.close();
g.close();
return 0;
}