Pagini recente » Rating Grigoras Lucian (kaju1324) | Istoria paginii runda/rujam/clasament | Cod sursa (job #1246992) | Cod sursa (job #1947148) | Cod sursa (job #1732875)
#include <iostream>
#include <fstream>
using namespace std;
int n,a[1000];
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int binar_one(int l,int r,int val)
{
int m;
while(l<=r) {
m=(l+r)/2;
if (a[m]<=val)
l=m+1;
else
r=m-1;
}
m=(l+r)/2;
if (a[m]>val) m--;
if (a[m]==val)
return m;
return -1;
}
int binar_doi(int l,int r,int val)
{
int m,n=r;
while(l<r)
{
m=(l+r)/2;
if (a[m]<=val)
l=m+1;
else
r=m;
}
m=(l+r)/2;
if (a[m]>val)
--m;
return m;
}
int binar_trei(int l,int r,int val)
{
int m;
while (l < r) {
m=(l+r)/2;
if (a[m]<val)
l=m+1;
else
r=m;
}
m=(l+r)/2;
if (a[m]<val)
++m;
return m;
}
int main()
{
f>>n;
int i,s,c,val;
for(i=1;i<=n;i++)
f>>a[i];
f>>s;
for(i=1;i<=s;i++)
{
f>>c>>val;
if(c==0)
g<<binar_one(1,n,val);
else if(c==1)
g<<binar_doi(1,n,val);
else if(c==2)
g<<binar_trei(1,n,val);
}
}