Pagini recente » Cod sursa (job #1948869) | Cod sursa (job #117941) | Cod sursa (job #772287) | Cod sursa (job #1522879) | Cod sursa (job #1753503)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,v[100001],m,tip,nr;
void caut0(int x){
int i=1, j=n, mij;
while(i<=j){
mij=(i+j)/2;
if(v[mij]<=x){
i=mij+1;
}
else{
j=mij-1;
}
}
mij=(i+j)/2;
if(v[mij]!=x){
mij--;
}
if(v[mij]==x){
fout<<mij<<endl;
}
else fout<<-1<<endl;
}
void caut1(int x){
int i=1, j=n, mij;
while(i<=j){
mij=(i+j)/2;
if(v[mij]<=x){
i=mij+1;
}
else{
j=mij-1;
}
}
mij=(i+j)/2;
if(v[mij]>x){
mij--;
}
fout<<mij<<endl;
}
void caut2(int x){
int i=1, j=n, mij;
while(i<=j){
mij=(i+j)/2;
if(v[mij]<x){
i=mij+1;
}
else{
j=mij-1;
}
}
mij=(i+j)/2;
if(v[mij]<x){
mij++;
}
fout<<mij<<endl;
}
int main()
{
fin>>n;
for(int i=1; i<=n; i++){
fin>>v[i];
}
fin>>m;
while(m--){
fin>>tip>>nr;
if(tip==0){
caut0(nr);
}
else if(tip==1){
caut1(nr);
}
else if(tip==2){
caut2(nr);
}
}
return 0;
}