Pagini recente » Statistici Vladut Ioan-Tudor (vladutioantudor) | Cod sursa (job #1509025) | Cod sursa (job #3029947) | Cod sursa (job #3038769) | Cod sursa (job #941389)
Cod sursa(job #941389)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,m,i,j,a[100],x;
int cbin0(int st,int dr,int x)
{
int k;
if(st>dr) return -1;
k=(st+dr)/2;
if(a[k]==x&&a[k+1]!=x)return k;
if(a[k]>x) return cbin0(st,k-1,x);
else if(a[k]<=x)return cbin0(k+1,dr,x);
}
int cbin1(int st,int dr,int x)
{
int k;
if(st>dr) return -1;
k=(st+dr)/2;
if(a[k]==x&&a[k+1]!=x)return k;
if(a[k]>x) return cbin1(st,k-1,x);
else return cbin1(k+1,dr,x);
}
int cbin2(int st,int dr,int x)
{
int k;
if(st>dr) return -1;
k=(st+dr)/2;
if(a[k]==x&&a[k-1]!=x)return k;
if(a[k]>=x) return cbin2(st,k-1,x);
else return cbin2(k+1,dr,x);
}
int main()
{
int p;
f>>n;
for(i=1; i<=n; i++)
f>>a[i];
f>>m;
for(i=1; i<=m; i++)
{f>>p>>x;
if(p==0) g<<cbin0(1,n,x)<<endl;
if (p==1)g<<cbin1(1,n,x)<<endl;
if (p==2)g<<cbin2(1,n,x);}
}