Pagini recente » Clasament training_day_3 | Profil Djok | E. Por Costel și Trădarea | Cod sursa (job #116056) | Cod sursa (job #2534449)
#include <bits/stdc++.h>
#define DM 100005
using namespace std;
ifstream fi("cautbin.in");
ofstream fo("cautbin.out");
int N,M,V[DM];
int query(int tip,int x)
{
if(tip==0)
{
int st=1,dr=N;
while(st<=dr)
{
int mij=(st+dr)/2;
if(V[mij]==x)
{
while(V[mij]==x)
mij++;
return mij-1;
}
if(V[mij]>x)
{
dr=mij-1;
}
else st=mij+1;
}
return -1;
}
if(tip==1)
{
int st=1,dr=N;
int mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(V[mij]>x)
dr=mij-1;
else st=mij+1;
}
return (st+dr)/2;
}
if(tip==3)
{
int st=1,dr=N;
int mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(V[mij]<x)
st=mij+1;
else dr=mij-1;
}
return (st+dr)/2;
}
}
int main()
{
fi>>N;
for(int i=1;i<=N;i++)
fi>>V[i];
fi>>M;
for(int i=1;i<=M;i++)
{
int a,b;
fi>>a>>b;
fo<<query(a,b)<<'\n';
}
return 0;
}