Pagini recente » Cod sursa (job #671151) | Cod sursa (job #2240892) | Cod sursa (job #896476) | Cod sursa (job #1823543) | Cod sursa (job #1736131)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out("cautbin.out");
int v[100002];
int n,m;
void task1(int stg, int dr, int x)
{
int poz=-1;
while(stg<=dr)
{
int mij=stg+(dr-stg)/2;
if(x>v[mij])
stg=mij+1;
else
if(x<v[mij])
dr=mij-1;
else
{
poz=mij;
stg=mij+1;
}
}
out<<poz<<'\n';
}
void task2(int stg, int dr, int x)
{
int poz=-1;
while(stg<=dr)
{
int mij=stg+(dr-stg)/2;
if(x>=v[mij])
{
poz=mij;
stg=mij+1;
}
else
dr=mij-1;
}
out<<poz<<'\n';
}
void task3(int stg, int dr, int x)
{
int poz=-1;
while(stg<=dr)
{
int mij=stg+(dr-stg)/2;
if(x<=v[mij])
{
poz=mij;
dr=mij-1;
}
else
stg=mij+1;
}
out<<poz<<'\n';
}
int main()
{
in>>n;
int i,a,b;
for(i=1; i<=n; i++)
in>>v[i];
in>>m;
for(i=0; i<m; i++)
{
in>>a>>b;
if(a==0) task1(1,n,b);
if(a==1) task2(1,n,b);
if(a==2) task3(1,n,b);
}
return 0;
}