Pagini recente » Cod sursa (job #198398) | Cod sursa (job #713925) | Cod sursa (job #581326) | Cod sursa (job #3209512) | Cod sursa (job #1697479)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
#define MAX 100001
int v[MAX];
int caut0(int s, int d, int x)
{
int m;
while(s<d)
{
m=(s+d)/2;
if(v[m]<=x)
s=m+1;
else
d=m-1;
}
m=(s+d)/2;
if(v[m]>x)
m--;
if(v[m]==x)
return m;
return -1;
}
int caut1(int s, int d, int x)
{
int m;
while(s<d)
{
m=(s+d)/2;
if(v[m]<=x)
s=m+1;
else
d=m;
}
m=(s+d)/2;
if(v[m]>x)
m--;
return m;
}
int caut2(int s, int d, int x)
{
int m;
while(s<d)
{
m=(s+d)/2;
if(v[m]<x)
s=m+1;
else
d=m;
}
m=(s+d)/2;
if(v[m]<x)
m++;
return m;
}
int main()
{
int N,M,i,tip,val;
fin>>N;
for(i=1;i<=N;i++)
fin>>v[i];
fin>>M;
while(M)
{
fin>>tip>>val;
if(tip==0)
fout<<caut0(1,N,val)<<endl;
if(tip==1)
fout<<caut1(i,N,val)<<endl;
if(tip==2)
fout<<caut2(1,N,val)<<endl;
M--;
}
return 0;
}