Pagini recente » Cod sursa (job #2943344) | Cod sursa (job #1332874) | Cod sursa (job #2332578) | Cod sursa (job #761214) | Cod sursa (job #2699743)
#include <iostream>
#include <fstream>
using namespace std;
int prima(int n,int v[],int x)
{
int li=1,lf=n;
int m=(li+lf)/2;
while(li<=lf)
{
if(v[m]<=x)li=m+1;
else lf=m-1;
m=(li+lf)/2;
}
if(x==v[lf])return lf;
else return -1;
}
int doi(int n,int v[],int x)
{
int li=1,lf=n;
int m=(li+lf)/2;
while(li<=lf)
{
if(v[m]<=x)li=m+1;
else lf=m-1;
m=(li+lf)/2;
}
return lf;
}
int trei(int n,int v[],int x)
{
int li=1,lf=n;
int m=(li+lf)/2;
while(li<=lf)
{
if(v[m]>=x)lf=m-1;
else li=m+1;
m=(li+lf)/2;
}
return li;
}
int v[100001];
int main()
{
int i,n,m,x;
fstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for(i=1; i<=n; i++)
f>>v[i];
f>>m;
for(i=1; i<=m; i++)
{
int y;
f>>y>>x;
if(y==0)g<<prima(n,v,x)<<'\n';
else if(y==1)g<<doi(n,v,x)<<'\n';
else if(y==2)g<<trei(n,v,x)<<'\n';
}
f.close();
g.close();
return 0;
}