Pagini recente » Cod sursa (job #762305) | Cod sursa (job #856206) | Cod sursa (job #1735479) | Cod sursa (job #1051354) | Cod sursa (job #1059204)
#include <iostream>
#include <fstream>
#define N 10001
#define M 10001
using namespace std;
int v[N], n, m;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
void p0(int x)
{
int pas = 1<<16;
int i=0;
while(pas != 0)
{
if(i+pas <= n && v[i+pas] <= x)
i+=pas;
//cout << i << endl;
pas /=2;
}
if(v[i] == x)
out << i;
else
out << -1;
out << "\n";
}
void p1(int x)
{
int pas = 1<<16;
int i=0;
while(pas != 0)
{
if(i+pas <=n && v[i+pas] <= x)
i+=pas;
pas/=2;
}
out << i;
out << "\n";
}
void p2(int x)
{
int pas = 1<<16;
int i=0;
while(pas != 0)
{
if(i+pas <=n && v[i+pas] < x)
i+=pas;
//cout << i;
pas/=2;
}
out << 1+i;
out << "\n";
}
int cautbin(int p,int x)
{
switch(p)
{
case 0:
p0(x);
break;
case 1:
p1(x);
break;
case 2:
p2(x);
break;
default:
return 0;
break;
}
return 0;
}
int main()
{
in >> n;
for(int i=1; i<=n; i++)
in >> v[i];
in >> m;
for(int i=1; i<=m; i++)
{
int p, x;
in >> p;
in >> x;
//cout << "Aa::" << endl;
cautbin(p, x);
}
return 0;
}