Pagini recente » Cod sursa (job #771518) | Cod sursa (job #1176269) | Cod sursa (job #2282947) | Cod sursa (job #1576063) | Cod sursa (job #2298638)
#include<fstream>
#include<iostream>
using namespace std;
int n, m, v[100002];
int cautbin0(int nr)
{
long long int mid;
int b=1, e=n;
while(b<e)
{
mid=(b+e)/2;
if((v[mid]==nr) && (v[mid+1]!=nr))
return mid;
if(v[mid]<=nr)
b=mid+1;
else
e=mid;
}
if(v[b]==nr)
return b;
return -1;
}
int cautbin1(int nr)
{
long long int mid;
int b=1, e=n;
while(b<e)
{
mid=(b+e)/2;
if(v[mid]<=nr)
b=mid+1;
else
e=mid;
}
if (v[b]>nr)
--b;
return b;
}
int cautbin2(int nr)
{
long long int mid;
int b=1, e=n;
while(b<e)
{
mid=(b+e)/2;
if(v[mid]>=nr)
e=mid;
else
b=mid+1;
}
if (v[mid]<nr)
++ mid;
return mid;
}
int main ()
{
int c, nr, i;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
in>>m;
for(i=0;i<m;i++)
{
in>>c>>nr;
if(!c)
out<<cautbin0(nr)<<"\n";
else if(c==1)
out<<cautbin1(nr)<<"\n";
else
out<<cautbin2(nr)<<"\n";
}
in.close();
out.close();
return 0;
}