Pagini recente » Cod sursa (job #1529713) | Cod sursa (job #1873246) | Cod sursa (job #1570459) | Cod sursa (job #1749004) | Cod sursa (job #2428331)
#include <fstream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out("cautbin.out");
int main()
{
int n,m,v[10000],i,poz=0,x,tip,s,d,mij;
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
in>>m;
for(tip=1;tip<=m;tip++)
in>>tip>>x;
for(tip=1;tip<=m;tip++)
{
if(tip==1)
{
for(i=1<<20;i>0;i/=2)
{
if(poz+i<=n&&v[poz+i]<=x)
poz=poz+i;
}
if(v[poz]==x)
out<<poz<<endl;
else
out<<-1<<endl;
}
if(tip==2)
{
s=1;d=n;
while(s<d)
{
mij=(s+d)/2;
if(v[mij]<=x)
s=mij+1;
else
d=mij;
}
mij = (d + s) / 2;
if (v[mij] > x)
mij--;
out<<mij<<endl;
}
if(tip==2)
{
s=1;d=n;
while(s<d)
{
mij=(s+d)/2;
if(v[mij]<x)
s=mij+1;
else
d=mij;
}
mij = (d + s) / 2;
if (v[mij] < x)
mij++;
out<<mij;
}
}
return 0;
}