Pagini recente » Cod sursa (job #2034839) | Cod sursa (job #795074) | Cod sursa (job #1384535) | Cod sursa (job #301973) | Cod sursa (job #209554)
Cod sursa(job #209554)
#include <iostream>
#include <fstream>
using namespace std;
int binary_search(int a[],int x,int n)
{
int l=0;
int h=n;
int middle;
while(l<h) {
middle = (l+h)/2;
if(a[middle] < x)
l = middle + 1;
else
h = middle;
}
if(l < n && a[l] == value)
return l;
else
return -1;
}
int find_max(int a[],int x,int n)
{
int pos=binary_search(a,x,n);
while(1){
if(pos == n-1) return pos;
pos++;
if(a[pos] !=x) return pos-1;
}
}
int find_min_eq(int a[],int x,int n)
{
int pos = binary_search(a,x,n);
if(pos == -1)
while(1){
x--;
pos = binary_search(a,x,n);
if(pos != -1) return pos;
}
else return pos;
}
int find_max_eq(int a[],int x, int n)
{
int pos = binary_search(a,x,n);
if(pos == -1)
while(1){
x++;
pos = binary_search(a,x,n);
if(pos != -1) return pos;
}
else return pos;
}
int main()
{
ifstream file("cautbin.in");
int n;
file >> n;
int *el = new int[100000];
int i;
for(i=0;i<n;i++)
file >> el[i];
int m;
int id, x;
file >> m;
for(i = 0 ;i < m;i++){
file >> id;
file >> x;
switch(id){
case 0: find_max(el,x,n); break;
case 1: find_min_eq(el,x,n); break;
case 2: find_max_eq(el,x,n); break;
}
}
delete [] el;
return 0;
}