Pagini recente » Cod sursa (job #987303) | Cod sursa (job #2539890)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100001], mij, N, i, x, optiune, M, p, q;
void cautare(int x)
{
p = 1;
q = N;
while(p <= q)
{
mij = (p + q) / 2;
if(v[mij] == x)
break;
else if(v[mij] > x)
q = mij - 1;
else if(v[mij] < x)
p = mij + 1;
}
}
int main()
{
f >> N;
for(i = 1; i <= N; ++i)
f >> v[i];
f >> M;
for(i = 1; i <= M; ++i)
{
f >> optiune >> x;
if(optiune == 0){
cautare(x);
if(v[mij] == x){
while(v[mij + 1] == x)
mij++;
g << mij << '\n';
}
else g << -1 << '\n';
}
if(optiune == 1){
cautare(x);
if(v[mij] == x){
while(v[mij + 1] == x)
mij++;
}
else if(v[mij] > x)
mij--;
g << mij << '\n';
}
if(optiune == 2){
cautare(x);
if(v[mij] == x){
while(v[mij - 1] == v[mij])
mij--;
}
else if(v[mij] < x)
mij++;
g << mij << '\n';
}
}
return 0;
}