Pagini recente » Cod sursa (job #299500) | Cod sursa (job #2589198) | Cod sursa (job #2116608) | Cod sursa (job #3256717) | Cod sursa (job #1022805)
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");
vector<int> v;
int n;
int search(int x) {
int hi = n, lo = -1,mid;
while(hi-lo > 1) {
mid = lo + (hi-lo)/2;
if(v[mid] < x)
lo = mid;
else
hi = mid;
}
return hi;
}
int search1(int x) {
int i = search(x);
cerr << i << '\n';
if(i==n||v[i]!=x)return -1;
while(v[++i]==x);
return i;
}
int search2(int x) {
int i = search(x);
while(v[++i]<=x);
return i;
}
int search3(int x) {
int i = search(x);
while(v[--i]>=x);
return i+2;
}
int main()
{
in >> n;
v.resize(n);
for(int i = 0; i < n; ++i)
in >> v[i];
int m;
in >> m;
while(m--) {
int t,x;
in >> t >> x;
switch(t) {
case 0:out << search1(x) << '\n';break;
case 1:out << search2(x) << '\n';break;
case 2:out << search3(x) << '\n';break;
}
}
return 0;
}