Pagini recente » Cod sursa (job #604235) | Cod sursa (job #2691595) | Cod sursa (job #1234350) | Cod sursa (job #902921) | Cod sursa (job #873626)
Cod sursa(job #873626)
#include<fstream>
using namespace std;
int a[100000],n,m,i,j,pos,x,o,y,y1;
int bc0(int pos)
{
int st,dr,mid;
pos=0;
st=1;dr=n;
while(st<=dr)
{
mid=(st+dr)/2;
if(a[mid]>x) dr=mid-1;
else if(a[mid]<x) st=mid+1;
else {pos=1; st=mid+1;}
}
y1=dr;
return pos;
}
int bc1(int pos)
{
int st,dr,mid;
pos=0;
st=1;
dr=n;
while(st<=dr)
{
mid=(st+dr)/2;
if(a[mid]>x) dr=mid-1;
else if(a[mid]<x) st=mid+1;
else {pos=1; st=mid+1;}
}
y1=dr;
return y1;
}
int bc2(int y1)
{
int st,dr,mid;
st=1; dr=n; pos=0;
while(st<=dr)
{
mid=(st+dr)/2;
if(a[mid]>=x) {y1=mid; dr=mid-1;}
else st=mid+1;
}
return y1;
}
int main ()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for(i=1;i<=n;i++)
{
f>>a[i];
}
f>>m;
for(o=1;o<=m;o++)
{
f>>y>>x;
if(y==0) { if(bc0(pos)==1) g<<y1<<"\n";
else g<<-1<<"\n"; }
else if(y==1) g<<bc1(pos)<<"\n";
else g<<bc2(y1)<<"\n";
}
return 0;
}