Pagini recente » Cod sursa (job #2133915) | Cod sursa (job #1114413) | Cod sursa (job #1697884) | Cod sursa (job #2032878) | Cod sursa (job #1148264)
#include<fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100001], i, n, m, c, lo, hi, mid, x;
int cautbin2(int val){
lo = 1; hi = n;
if (val <= v[1])
return 1;
while (lo <= hi){
mid = lo + (hi - lo) / 2;
if (v[mid] >= val and v[mid - 1] < val)
return mid;
else if (v[mid] >= val)
hi = mid - 1;
else
lo = mid + 1;
}
}
int cautbin1(int val){
lo = 1; hi = n;
if (val >= v[n])
return n;
while (lo <= hi){
mid = lo + (hi - lo) / 2;
if (v[mid] <= val and v[mid + 1] > val)
return mid;
else if (v[mid] <= val)
lo = mid + 1;
else
hi = mid - 1;
}
}
int cautbin(int val){
lo = 1; hi = n;
while (lo <= hi){
mid = lo + (hi - lo) / 2; //fout << mid << '\n';
if (v[mid] == val and v[mid + 1] != val)
return mid;
else if (v[mid] <= val)
lo = mid + 1;
else
hi = mid - 1;
}
return -1;
}
int main(){
fin >> n;
for (i = 1; i <= n; i++)
fin >> v[i];
fin >> m;
for (i = 1; i <= m; i++){
fin >> c;
if (c == 0){
fin >> x;
fout << cautbin(x) << '\n';
}
if (c == 1){
fin >> x;
fout << cautbin1(x) << '\n';
}
if (c == 2){
fin >> x;
fout << cautbin2(x) << '\n';
}
}
}