Pagini recente » Cod sursa (job #818238) | Cod sursa (job #1879033) | Cod sursa (job #1059653) | Cod sursa (job #2792709) | Cod sursa (job #2643133)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("in.txt");
ofstream g("out.txt");
int v[100001], n, i, mij, x, quest, m, st, dr;
void cautare(int x) {
st = 1;
dr = n;
while (st <= dr) {
mij = (st + dr) / 2;
if (v[mij] == x)
break;
else if (v[mij] > x)
dr = mij - 1;
else if (v[mij] < x)
st = mij + 1;
}
}
int main() {
f >> n;
for (i = 1; i <= n; i++)
f >> v[i];
f >> m;
for (i = 1; i <= m; i++) {
f >> quest >> x;
if (quest == 0) {
cautare(x);
if (v[mij] == x) {
while (v[mij + 1] == x)
mij++;
g << mij << '\n';
} else
g << -1 << '\n';
}
if (quest == 1) {
cautare(x);
if (v[mij] == x) {
while (v[mij + 1] == x)
mij++;
} else if (v[mij] > x)
mij--;
g << mij << '\n';
}
if (quest == 2) {
cautare(x);
if (v[mij] == x) {
while (v[mij - 1] == v[mij])
mij--;
} else if (v[mij] < x)
mij++;
g << mij << '\n';
}
}
g.close();
f.close();
return 0;
}