Pagini recente » Cod sursa (job #2770369) | Cod sursa (job #2292939) | Cod sursa (job #1224187) | Cod sursa (job #241304) | Cod sursa (job #2049884)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("caut.bin");
ofstream g("caut.out");
int v[10000000],n,kx,nrintr,lo,hi,k1,y,k,x,mid;
int main()
{
f>>n;
for(int i=1; i<=n; i++) f>>v[i];
f>>k;
for(int i=1; i<=k; i++)
{
f>>nrintr>>x;
k1=0;
lo=1;
hi=n;
while(hi>lo)
{
mid=lo+(hi-lo)/2;
if(v[mid]==x) break;
if(v[mid]>x) hi=mid-1;
if(v[mid]<x) lo=mid+1;
}
if(v[mid]==x) k1=1;
if(nrintr==0)
{
if(k1==1){while(v[mid+1]==x) mid++;
g<<mid<<'\n';}
else g<<-1<<" ";
}
if(nrintr==1)
{
if(k1==1){while(v[mid+1]==x) mid++;
g<<mid<<'\n';}
else {y=lower_bound(v+1,v+n+1,x+1)-v;
g<<y<<" ";}
}
if(nrintr==2)
{
if(k1==1){while(v[mid-1]==x) mid--;
g<<mid<<'\n';}
else {y=lower_bound(v+1,v+n+1,x+1)-v;
g<<y<<" ";
}
}
}
return 0;
}