Pagini recente » Cod sursa (job #7679) | Cod sursa (job #191625) | Cod sursa (job #7677) | Cod sursa (job #2169397)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100001], n, m;
int caut0(int x){
int r=0, pas=1<<16;
while (pas!=0){
if (r+pas<=n && v[r+pas]<=x){
r+=pas;
}
pas/=2;
}
if (v[r]!=x){
return -1;
}
return r;
}
int caut1 (int x){
int r=0, pas=1<<16;
while (pas!=0){
if (r+pas<=n && v[r+pas]<=x){
r+=pas;
}
pas/=2;
}
return r;
}
int caut2 (int x){
int r=0, pas=1<<16;
while (pas!=0){
if (r+pas<=n && v[r+pas]<x){
r+=pas;
}
pas/=2;
}
r++;
return r;
}
int main() {
f>>n;
for (int i=0; i<n; i++){
f>>v[i];
}
f>>m;
for (int i=0; i<m; i++){
int c, x;
f>>c>>x;
if (c==0){
g<<caut0(x)+1<<'\n';
}
if (c==1){
g<<caut1(x)+1<<'\n';
}
if (c==2){
g<<caut2(x)+1<<'\n';
}
}
return 0;
}