Pagini recente » Cod sursa (job #796119) | Cod sursa (job #3349805) | Cod sursa (job #3329134) | Cod sursa (job #1256126) | Cod sursa (job #3352911)
#include <fstream>
#define int long long
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100001];
void solve0(int x,int n) {
int st=1,dr=n,rez=0;
while (st<=dr) {
int mij=(st+dr)/2;
if (v[mij]<=x) {
rez=mij;
st=mij+1;
}else {
dr=mij-1;
}
}
if (v[rez]==x) {
fout<<rez<<"\n";
}else {
fout<<"-1\n";
}
}
void solve1(int x,int n) {
int st=1,dr=n,rez=0;
while (st<=dr) {
int mij=(st+dr)/2;
if (v[mij]<=x) {
rez=mij;
st=mij+1;
}else {
dr=mij-1;
}
}
fout<<rez<<"\n";
}
void solve2(int x,int n) {
int st=1,dr=n,rez=0;
while (st<=dr) {
int mij=(st+dr)/2;
if (v[mij]>=x) {
rez=mij;
dr=mij-1;
}else {
st=mij+1;
}
}
fout<<rez<<"\n";
}
signed main() {
int n;
fin>>n;
for (int i=1;i<=n;i++) {
fin>>v[i];
}
int q;
fin>>q;
for (int i=1;i<=q;i++) {
int cer,x;
fin>>cer>>x;
if (cer==0) {
solve0(x,n);
}else if (cer==1) {
solve1(x,n);
}else if (cer==2) {
solve2(x,n);
}
}
return 0;
}