Pagini recente » Cod sursa (job #2819643) | Cod sursa (job #126826) | Cod sursa (job #1102990) | Cod sursa (job #2482638) | Cod sursa (job #876169)
Cod sursa(job #876169)
#include<iostream>
#include<cstdio>
#include<cstdlib>
#define N 100010
int v[N];
using namespace std;
int binary_search0(int p, int u, int k)
{
int m;
while(p<=u)
{
m=(p+u)/2;
if(v[m]<=k)
p=m+1;
else
u=m-1;
}
m=(p+u)/2;
if(v[m]>k)
m --;
if (v[m] == k)
return m;
return -1;
}
int binary_search1 (int p, int u, int k) {
int m, n=u;
while (p<u){
m=(p+u)/2;
if(v[m]<=k)
p=m+1;
else
u=m;
}
m=(p+u)/2;
if(v[m]>k)
m--;
return m;
}
int binary_search2 (int p, int u, int k) {
int m;
while (p<u) {
m=(p+u)/2;
if(v[m]<k)
p=m+1;
else
u=m;
}
m=(p+u)/2;
if(v[m]<k)
m++;
return m;
}
int main () {
int i, n, m, tip, val;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
cin>>n;
for(i=1; i<=n; i++)
cin>>v[i];
cin>>m;
while(m--){
cin>>tip>>val;
if (tip == 0)
cout<<binary_search0<<1<<" "<<n<<" "<<val<<"\n";
if (tip == 1)
cout<<binary_search1<<1<<" "<<n<<" "<<val<<"\n";
if (tip == 2)
cout<<binary_search2<<" "<<1<<" "<<n<<" "<<val<<"\n";
cin.close();
cout.clsoe();
}
return 0;
}