Pagini recente » Cod sursa (job #1604981) | Cod sursa (job #119899) | Cod sursa (job #1223290) | Cod sursa (job #2557468) | Cod sursa (job #2066156)
#include <iostream>
#include <fstream>
using namespace std;
const int L = 16;
int v[100001];
void bin(int &r,int n,int x,int pas,int v[100001])
{
r=0;
while(pas!=0)
{
if(r+pas<=n && v[r+pas]<=x)
r+=pas;
pas/=2;
}
}
void bin2(int &r,int n,int x,int pas,int v[100001])
{
r=0;
while(pas!=0)
{
if(r+pas<=n && v[r+pas]<x)
r+=pas;
pas/=2;
}
}
int main()
{
int n,i,m,x,r,pas,y;
ifstream f ("cautbin.in");
ofstream cout("cautbin.out");
f>>n;
pas=1<<L;
for(i=1; i<=n; i++)
f>>v[i];
f>>m;
for(i=0; i<m; i++)
{
r=0;
f>>y>>x;
bin(r,n,x,pas,v);
if(y==0)
{
bin(r,n,x,pas,v);
if(r>0 && v[r]==x) cout<<r;
else cout << -1;
}
if(y==1)
{
bin(r,n,x,pas,v);
cout<<r;
}
if(y==2)
{
bin2(r,n,x,pas,v);
r++;
cout<<r;
}
cout << "\n";
}
return 0;
}