Pagini recente » Cod sursa (job #496063) | Cod sursa (job #534286) | Cod sursa (job #2059273) | Cod sursa (job #907486) | Cod sursa (job #2756748)
#include <fstream>
#define nmax 100005
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n, m, type, param;
int v[nmax];
int subtask1(int st, int dr, int a)
{
int med;
while(st<=dr)
{
med = (st+dr)/2;
if(v[med]<=a)
{
st = med+1;
}
else
dr = med-1;
}
med = (st+dr)/2;
if(v[med]==a)
return med;
else
return -1;
}
int subtask2(int st, int dr, int a)
{
int med;
while(st<=dr)
{
med =(st+dr)/2;
if(v[med]>a)
dr = med-1;
else
st = med+1;
}
med = (st+dr)/2;
return med;
}
int subtask3(int st, int dr, int a)
{
int med;
while(st <= dr)
{
med = (st+dr)/2;
if(v[med]<a)
st= med +1;
else
dr = med-1;
}
med = (st+dr)/2;
return med+1;
}
int main()
{
in>>n;
for(int i=1; i<=n; i++)
in>>v[i];
in>>m;
while(m>0)
{
in>>type>>param;
if(type==0)
out<<subtask1(1,n,param)<<"\n";
if(type==1)
out<<subtask2(1,n,param)<<"\n";
if(type==2)
out<<subtask3(1,n,param)<<"\n";
m--;
}
return 0;
}