Pagini recente » Cod sursa (job #761606) | Cod sursa (job #2916062) | Cod sursa (job #1224306) | Cod sursa (job #1060426) | Cod sursa (job #2175048)
#include <bits/stdc++.h>
#define MOD 1999999973
using namespace std;
int n, cc, v[100005], a, b, tip, rsp, m, x;
ifstream f ("cautbin.in");
ofstream g ("cautbin.out");
void cautare_0( int val )
{
int ls = 1;
int ld = n;
int mij;
rsp = 0;
while ( ls <= ld )
{
mij = (ls + ld) / 2;
if ( v[mij] <= val )
{
rsp = mij;
ls = mij + 1;
}
else
{
ld = mij - 1;
}
}
if ( v[rsp] == val )
{
g<<rsp<<'\n';
}
else
{
g<<-1<<'\n';
}
}
void cautare_1(int val)
{
int ls = 1;
int ld = n;
int mij;
rsp = 1;
while ( ls <= ld )
{
mij = (ls + ld) / 2;
if ( v[mij] <= val )
{
rsp = mij;
ls = mij + 1;
}
else
{
ld = mij - 1;
}
}
g<<rsp<<'\n';
}
void cautare_2(int val)
{
int ls = 1;
int ld = n;
int mij;
rsp = 1;
while ( ls <= ld )
{
mij = (ls + ld) / 2;
if ( v[mij] >= val )
{
rsp = mij;
ld = mij - 1;
}
else
{
ls = mij + 1;
}
}
g<<rsp<<'\n';
}
int main ()
{
f>>n;
for ( int i = 1 ; i <= n; i++ )
{
f>>v[i];
}
f>>m;
for ( int i = 1; i <= m; i++ )
{
f>>tip>>x;
if ( tip == 0 )
{
cautare_0(x);
}
else if ( tip == 1 )
{
cautare_1(x);
}
else
{
cautare_2(x);
}
}
}