Pagini recente » Cod sursa (job #273673) | Cod sursa (job #2935696) | Cod sursa (job #452006) | Cod sursa (job #328961) | Cod sursa (job #2335812)
#include <iostream>
#include<fstream>
#include<cmath>
#include<climits>
using namespace std;
int ct;
int BS1(int v[],int l,int r,int x ){
int mid;
while(l<=r){
mid=l+(r-l)/2;
if(v[mid]<x) l=mid+1;
else if(v[mid]==x){
while(v[mid]==x)
mid++;
return mid-1;}
else if(v[mid]>x) r=mid-1;
}
return -1;
}
int BS2(int v[],int l,int r,int x){
int mid,raux=r,laux=l;
while(raux>=laux){
mid=laux+(raux-laux)/2;
if(v[mid]==x){
while(v[mid]==x)
mid++;
return mid-1;}
else if(x>v[mid])laux=mid+1;
else if(x<v[mid])raux=mid-1;
}
BS2(v,l,r,x-1);
}
BS3(int v[],int l,int r, int x){
int mid,raux=r,laux=l;
while(raux>=laux){
mid=laux+(raux-laux)/2;
if(v[mid]==x){
while(v[mid]==x)
mid--;
return mid+1;
}
else if(x>v[mid])laux=mid+1;
else if(x<v[mid])raux=mid-1;
}
BS3(v,l,r,x+1);
}
int main(){
int n,v[100],x,m,caz;
ifstream in("cin.in");
ofstream out("cout.out");
in>>n;
for(int i=1;i<=n;i++)
in>>v[i];
in>>m;
for(int j=1;j<=m;j++){
in>>caz>>x;
if(caz==0){
out<<BS1(v,1,n,x)<<endl;
}
if(caz==1){
out<<BS2(v,1,n,x)<<endl;
}
if(caz==2){
out<<BS3(v,1,n,x)<<endl;
}
}
}