Pagini recente » Cod sursa (job #1226699) | Cod sursa (job #1316351) | Cod sursa (job #2668647) | Cod sursa (job #269577) | Cod sursa (job #2096622)
#include <iostream>
#include <fstream>
using namespace std;
int V[100005];
int nr0(int f, int l, int val)
{
int M;
while(f<=l)
{
M=(f+l)/2;
if (V[M]<=val)
f=M+1;
else
l=M-1;
}
M=(f+l)/2;
if(V[M]>val)
M--;
if(V[M]==val)
return M;
return -1;
}
int nr1(int f,int l, int val)
{
int M,N=l;
while(f<l)
{
M=(f+l)/2;
if(V[M]<= val)
f=M+1;
else
l=M;
}
M=(f+l)/2;
if(V[M]>val)
M--;
return M;
}
int nr2(int f, int l, int val)
{
int M;
while(f<l)
{
M=(f+l)/2;
if(V[M]<= val)
f=M+1;
else
l=M;
}
M=(f+l)/2;
if(V[M]<val)
M++;
return M;
}
int main()
{
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int N,M,i,tip,nr;
in>>N;
for(i=1;i<=N;i++)
in>>V[N];
in>>M;
while(M>0)
{
in>>tip>>nr;
if(tip==0)
out<<nr0(1, N, nr)<<"/n";
if(tip==1)
out<<nr1(1, N, nr)<<"/n";
if(tip==2)
out<<nr2(1, N, nr)<<"/n";
}
return 0;
}