Pagini recente » Cod sursa (job #498540) | Istoria paginii utilizator/danaioana | Istoria paginii utilizator/marinda3520 | Istoria paginii utilizator/sbordeianu | Cod sursa (job #1736129)
#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])
{
poz=mij;
stg=mij+1;
}
else
dr=mij-1;
}
out<<poz<<'\n';
}
void task2(int stg, int dr, int x)
{
int poz;
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;
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;
}