Pagini recente » Cod sursa (job #475900) | Monitorul de evaluare | Cod sursa (job #1125965) | Cod sursa (job #3318683) | Cod sursa (job #3316600)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int v[100002];
int bin(int n, int x, int c)
{
int st = 1;
int dr = n;
while ( st <= dr )
{
int mijl = ( st + dr ) / 2;
if ( v[mijl] == x )
{
if ( c == 0 || c == 1)
{
while ( v[mijl] == x )
mijl++;
mijl--;
return mijl;
}
else
{
while ( v[mijl] == x )
mijl--;
mijl++;
return mijl;
}
}
if ( v[mijl] > x )
dr = mijl - 1;
if ( v[mijl] < x )
st = mijl + 1;
}
if ( c == 0 )
return -1;
else
return st;
}
int main()
{
int n;
fin >> n;
for (int i=1; i<=n; i++)
fin >> v[i];
int m, c, x;
fin >> m;
while ( m > 0 )
{
fin >> c >> x;
fout << bin(n, x, c) << "\n";
m--;
}
return 0;
}