Pagini recente » Cod sursa (job #1327990) | Cod sursa (job #3192821) | Cod sursa (job #1026472) | Cod sursa (job #1563274) | Cod sursa (job #2718157)
#include <fstream>
#include <vector>
std::vector<int>v;
int cb1(int x, int st = 0, int dr = v.size()-1) {
int ans = -1;
while(st<=dr) {
int mij = (st+dr)>>1;
if(v[mij]==x) ans = mij+1, st = mij+1;
if(v[mij]<x) st = mij+1;
if(v[mij]>x) dr = mij-1;
}
return ans;
}
int cb2(int x, int st = 0, int dr = v.size()-1) {
int ans = -1;
while(st<=dr) {
int mij = (st+dr)>>1;
if(v[mij]<=x) ans = mij+1, st = mij+1;
if(v[mij]>x) dr = mij-1;
}
return ans;
}
int cb3(int x, int st = 0, int dr = v.size()-1) {
int ans = -1;
while(st<=dr) {
int mij = (st+dr)>>1;
if(v[mij]<x) st = mij+1;
if(v[mij]>=x) ans = mij+1, dr = mij-1;
}
return ans;
}
int main() {
std::ifstream fin("cautbin.in");
std::ofstream fout("cautbin.out");
int n, k, op, x;
fin>>n;
v.resize(n);
for(int i=0;i<n;i++) fin>>v[i];
fin>>k;
while(k--) {
fin>>op>>x;
if(op==0) fout<<cb1(x)<<"\n";
if(op==1) fout<<cb2(x)<<"\n";
if(op==2) fout<<cb3(x)<<"\n";
}
}