Cod sursa(job #917604)

Utilizator apopeid13Apopeid Alejandro apopeid13 Data 18 martie 2013 10:08:18
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[100005],n,m;
int Cbin(int x)
{ int l=1,r=n,mid;
while(l<r)
{ mid=(l+r)/2;
if (x>=a[mid]) l=mid+1; else r=mid-1;
}
mid=(l+r)/2;
if (x<a[mid]) mid--;
if (x==a[mid]) return mid;
return -1;
}
int Cbin2(int x)
{ int l=1,r=n,mid;
while(l<r)
{ mid=(l+r)/2;
if (x>=a[mid]) l=mid+1; else r=mid-1;
}
mid=(l+r)/2;
if (x<a[mid]) mid--;
return mid;
}
int Cbin3(int x)
{ int l=1,r=n,mid;
while(l<r)
{ mid=(l+r)/2;
if (x>a[mid]) l=mid+1; else r=mid;
}
mid=(l+r)/2;
if (x>a[mid]) mid++;
return mid;
}
int main()
{ int i,tip,nr;
f>>n;
for(i=1;i<=n;i++) f>>a[i];
f>>m;
for(i=1;i<=m;i++)
{f>>tip>>nr;
if (tip==0) g<<Cbin(nr)<<"\n";
if (tip==1) g<<Cbin2(nr)<<"\n";
if (tip==2) g<<Cbin3(nr)<<"\n";
}
return 0;
}