Pagini recente » Cod sursa (job #1880370) | Cod sursa (job #2064874) | Cod sursa (job #2813887) | Cod sursa (job #1776349) | Cod sursa (job #1273280)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int N,M,i,x,tip;
long v[100005];
int tip0(int st, int dr, int x)
{
int poz=-1;
while(st<=dr)
{
int m=(st+dr)/2;
if(x==v[m])
{poz=m; st=m+1;}
if(x<v[m])
dr=m-1;
if(x>v[m])
st=m+1;
}
return poz;
}
int tip1(int st, int dr, int x)
{
int poz;
while(st<=dr)
{
int m=(st+dr)/2;
if(x>=v[m])
{poz=m; st=m+1;}
if(x<v[m])
dr=m-1;
}
return poz;
}
int tip2(int st, int dr, int x)
{
int poz;
while(st<=dr)
{
int m=(st+dr)/2;
if(x<=v[m])
{poz=m; dr=m-1;}
if(x>v[m])
st=m+1;
}
return poz;
}
int main()
{
f>>N;
for(i=1;i<=N;i++)
f>>v[i];
f>>M;
for(i=1;i<=M;i++)
{
f>>tip>>x;
if(tip==0)
g<<tip0(1,N,x)<<"\n";
if(tip==1)
g<<tip1(1,N,x)<<"\n";
if(tip==2)
g<<tip2(1,N,x)<<"\n";
}
f.close();
g.close();
return 0;
}