Pagini recente » Cod sursa (job #2301330) | Cod sursa (job #2178522) | Cod sursa (job #1632788) | Cod sursa (job #42304) | Cod sursa (job #2708413)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int mid,low,high;
int n,m,v[100001],op,x;
void Solution1()
{
high=n;
low=1;
while(low<=high)
{
mid=low+(high-low)/2;
if(v[mid]<=x)
low=mid+1;
else
high=mid-1;
}
mid=low+(high-low)/2;
if(v[mid]>x)
mid--;
if(v[mid]==x)
g<<mid<<'\n';
else g<<-1<<'\n';
}
void Solution2()
{
high=n;
low=1;
while(low<high)
{
mid=low+(high-low)/2;
if(v[mid]<=x)
low=mid+1;
else high=mid;
}
mid=low+(high-low)/2;
if(v[mid]>x)
mid--;
g<<mid<<'\n';
}
void Solution3()
{
high=n;
low=1;
while(low<high)
{
mid=low+(high-low)/2;
if(v[mid]>=x)
high=mid;
else low=mid+1;
}
mid=low+(high-low)/2;
if(v[mid]>x)
mid++;
g<<mid<<'\n';
}
int main()
{
f>>n;
for(int i=1; i<=n; i++)
f>>v[i];
f>>m;
for(int i=0; i<m; i++)
{
f>>op>>x;
if(op==0)
Solution1();
if(op==1)
Solution2();
if(op==2)
Solution3();
}
return 0;
}