Pagini recente » Rating Coravu Andrei (andreicoravu) | Cod sursa (job #37673) | Cod sursa (job #1809183) | Cod sursa (job #736531) | Cod sursa (job #1518296)
#include<fstream>
#include<iostream>
using namespace std;
int n, m, v[100002], pos;
int cautbin0(int nr) ///1 3 3 3 5
{
long long int mid;
int b=1, e=n;
while(b<e)
{
mid=(b+e)/2;
//cout<<mid<<" "<<v[mid]<<endl;
if(v[mid]<=nr)
b=mid+1;
else
e=mid;
//cout<<b<<" "<<e;
}
if(v[mid]==nr)
return mid;
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;
}
return mid;
}
int cautbin2(int nr) ///1 3 3 3 5, 3
{
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";
}
}