Pagini recente » Cod sursa (job #1171001) | Diferente pentru problema/beyond_the_wall intre reviziile 17 si 16 | Diferente pentru problema/pachete intre reviziile 11 si 12 | Diferente pentru problema/beyond_the_wall intre reviziile 26 si 25 | Cod sursa (job #2559603)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int sir[100001],n,m;
int gasire(int x)
{
int i=1,j=n,m;
while(i<j)
{
m=(i+j+1)/2;
if(sir[m]<=x)
i=m;
else
j=m-1;
}
return sir[i]==x? i : -1;
}
int maxim(int x)
{
int i,j,m;
i=1;
j=n;
while(i<j)
{
m=(i+j+1)/2;
if(sir[m]<=x)
i=m;
else
j=m-1;
}
return i;
}
int minim(int x)
{
int i,j,m;
i=1;
j=n;
while(i<j)
{
m=(i+j)/2;
if(sir[m]>=x)
j=m;
else
i=m+1;
}
return i;
}
int main()
{
f>>n;
for(int i=1;i<=n;i++)
f>>sir[i];
f>>m;
int cod,x;
for(int i=1;i<=m;i++)
{
f>>cod>>x;
if(cod==0)
g<<gasire(x);
else if(cod==1)
g<<maxim(x);
else
g<<minim(x);
g<<'\n';
}
f.close();
g.close();
}