Pagini recente » Cod sursa (job #1891287) | Cod sursa (job #1448610) | Cod sursa (job #775115) | Cod sursa (job #2564160) | Cod sursa (job #890509)
Cod sursa(job #890509)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, k, v[100001], x, y, i;
inline void caut0(int g) {
int in = 1, sf = n, mij;
while(in < sf) {
mij = (sf - in) / 2 + in;
if(v[mij] <= g) {
in = mij + 1;
}
else {
sf = mij - 1;
}
}
if(v[mij] > g) {
mij--;
}
if(v[mij] == g) {
fout << mij << '\n';
}else fout << -1 << '\n';
}
inline void caut1(int g) {
int in = 1, sf = n, mij;
while(in < sf) {
mij = (sf - in) / 2 + in;
if(v[mij] <= g) {
in = mij + 1;
}
else {
sf = mij;
}
}
if(sf == in) {
mij = sf;
}
if(v[mij] > g) {
mij--;
}
fout << mij << '\n';
}
inline void caut2(int g) {
int in = 1, sf = n, mij;
while(in < sf) {
mij = (sf - in) / 2 + in;
if(v[mij] < g) {
in = mij + 1;
}
else {
sf = mij;
}
}
if(sf == in) {
mij = sf;
}
if(v[mij] < g) {
mij++;
}
fout << mij << '\n';
}
int main() {
fin >> n;
for(i = 1; i <= n; ++i) {
fin >> v[i];
}
fin >> k;
for(i = 0; i < k; ++i) {
fin >> x;
fin >> y;
if(x == 0) {
caut0(y);
}
if(x == 1) {
caut1(y);
}
if(x == 2) {
caut2(y);
}
}
fin.close();
fout.close();
return 0;
}