Pagini recente » Cod sursa (job #1214236) | Cod sursa (job #1103966) | Cod sursa (job #1215818) | Cod sursa (job #2042748) | Cod sursa (job #1425825)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,a[100001],b[100001],i,m,v,x,st,dr,h;
int main()
{ f>>n;
for(i=0;i<=n-1;i++) {f>>a[i];b[i+1]=a[i];}
f>>m;
for(i=1;i<=m;i++)
{ f>>v>>x;
if(v==0)
{ st=0;dr=n-1;
while(st<dr)
{ h=(st+dr)/2;
if(x>=a[h]) st=h+1; else dr=h-1;
}
if(x==b[st]) g<<st<<'\n'; else g<<-1<<'\n';
}
else if(v==1)
{ st=0;dr=n-1;
while(st<dr)
{ h=(st+dr)/2;
if(x>=a[h]) st=h+1; else dr=h-1;
}
if(x==b[st]) g<<st<<'\n';
else {while(a[st-1]==x) st--; g<<st+1<<'\n';}
}
else
{ st=0;dr=n-1;
while(st<dr)
{ h=(st+dr)/2;
if(x>=a[h]) st=h+1; else dr=h-1;
}
while(b[st]==x) st--; if(a[st]==x) g<<st+1;else g<<st;
}
}
}