Pagini recente » Rating Orosz Arnold Daniel (oroszarnold12) | Cod sursa (job #268560) | Cod sursa (job #1628186) | Cod sursa (job #685710) | Cod sursa (job #564207)
Cod sursa(job #564207)
#include<fstream>
#define NMAX 100005
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[NMAX], n, m;
int cauta1 (int x)
{
int st=1, dr=n, mij, ok=-1;
while (st<=dr)
{
mij=(st+dr)/2;
if (a[mij]==x) ok=mij, st=mij+1;
else if (a[mij]<x) st=mij+1;
else dr=mij-1;
}
return ok;
}
int cauta2 (int x)
{
int st=1, dr=n, mij, ok=1;
while (st<=dr)
{
mij=(st+dr)/2;
if (a[mij]>x) dr=mij-1;
else ok=mij, st=mij+1;
}
return ok;
}
int cauta3 (int x)
{
int st=1, dr=n, mij, ok=m;
while (st<=dr)
{
mij=(st+dr)/2;
if (a[mij]<x) st=mij+1;
else ok=mij, dr=mij-1;
}
return ok;
}
void Citeste()
{
int i, x, op;
f>>n;
for (i=1; i<=n; ++i) f>>a[i];
f>>m;
while (m--)
{
f>>op>>x;
if (op==0) g<<cauta1(x);
else if (op==1) g<<cauta2(x);
else g<<cauta3(x);
g<<"\n";
}
}
int main()
{
Citeste();
f.close();
g.close();
return 0;
}