Pagini recente » Cod sursa (job #1524154) | Cod sursa (job #195006) | Cod sursa (job #1792030) | Cod sursa (job #680564) | Cod sursa (job #2034687)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int caut0(unsigned int N,unsigned int v[100001],unsigned int x)
{
unsigned int i=1,j=N,m;
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)
x--;
if(v[m]==x)
return m;
return -1;
}
int caut1(unsigned int N,unsigned int v[100001],unsigned int x)
{
unsigned int i=1,j=N,m;
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 caut2(unsigned int N,unsigned int v[100001],unsigned int x)
{
unsigned int i=1,j=N,m;
while(i<j)
{
m=(i+j)/2;
if(v[m]>=x)
j=m;
else
i=m+1;
}
m=(i+j)/2;
if(v[m]<x) m++;
return m;
}
int main()
{
unsigned short int tip;
unsigned int N,M,k,x,intreb;
f>>N;
unsigned int v[N+1];
for(k=1;k<=N;k++)
f>>v[k];
f>>M;
for(intreb=1;intreb<=M;intreb++)
{
f>>tip>>x;
if(tip==0)
g<<caut0(N,v,x)<<"\n";
else if(tip==1)
g<<caut1(N,v,x)<<"\n";
else
g<<caut2(N,v,x)<<"\n";
}
}