Pagini recente » Cod sursa (job #345649) | Cod sursa (job #1311651) | Cod sursa (job #314537) | Cod sursa (job #2286118) | Cod sursa (job #1602180)
//#include <iostream>
#include <fstream>
using namespace std;
int v[100005], n, m;
ifstream f("cautbin.in");
ofstream cout("cautbin.out");
void c(int x, int par)
{
int l = 1, r = n, mid;
while(l < r)
{
mid = (l+r+1)/2;
//cout << l << ' ' << r << ' ' << mid << '\n';
if(v[mid] > x)
r = mid-1;
else
l = mid;
}
switch(par)
{
case 0:{if(v[l] != x) cout << -1 << '\n'; else cout << l << '\n'; break;}
case 1:{cout << l << '\n'; break;}
case 2:{if(v[l] == x) cout << l << '\n'; else cout << l+1 << '\n'; break;}
}
}
void c_2(int x)
{
int ma = -1, l = 1, r = n, mid;
while(l < r)
{
mid = (l+r)/2;
if(v[mid] >= x)
r = mid;
else
l = mid+1;
}
cout << l;
}
int main()
{
f >> n;
for(int i = 1; i <= n; ++i)
f >> v[i];
f >> m;
for(int i = 1; i <= m; ++i)
{
int x, y;
f >> x >> y;
switch(x)
{
case 0:{c(y, 0); break;}
case 1:{c(y, 1); break;}
case 2:{c_2(y); break;}
}
}
return 0;
}