Pagini recente » Cod sursa (job #699628) | Cod sursa (job #2299389) | Cod sursa (job #2145272) | Cod sursa (job #1230822) | Cod sursa (job #661597)
Cod sursa(job #661597)
#include<fstream>
#include<iostream>
using namespace std;
int v[100002],N;
int cazul_2(int val)
{ int mid,st=1,dr=N,poz;
while(st<dr)
{mid=(st+dr)/2;
if(v[mid]<val)
st=mid+1;
else dr=mid; }
poz=(st+dr)/2;
if(v[poz]<val) poz++;
return poz; }
int cazul_1(int val)
{ int mid,st=1,dr=N,poz;
while(st<dr)
{mid=(st+dr)/2;
if(v[mid]<=val)
st=mid+1;
else dr=mid; }
poz=(st+dr)/2;
if(v[poz]>val) poz--;
return poz; }
int cazul_0(int val)
{ int mid,st=1,dr=N,poz;
while(st<=dr)
{ mid=(st+dr)/2;
if(v[mid]<=val)
st=mid+1;
else
dr=mid-1; }
poz=(st+dr)/2;
if(v[poz]>val) poz--;
if(v[poz]==val)return poz;
return -1;}
int main()
{ int N, M, caz, x;
fstream f("cautbin.in", ios::in);
fstream g("cautbin.out", ios::out);
f>>N;
for(int i=1;i<=N;i++)
f>>v[i];
f>>M;
for(int i=1;i<=M;i++){
f>>caz>>x;
if(caz==0) g<<cazul_0(x)<<endl;
if(caz==1) g<<cazul_1(x)<<endl;
if(caz==2) g<<cazul_2(x)<<endl;
}
f.close();
g.close();
return 0;
}