Pagini recente » Cod sursa (job #2346412) | Cod sursa (job #3265872) | Cod sursa (job #1512597) | Cod sursa (job #615184) | Cod sursa (job #1558459)
#include <fstream>
#include <vector>
using namespace std;
int SIZE, Q;
int MaxPos(const vector<int>& V, int n) {
int maxPos = -1;
int start = 0;
int end = SIZE-1;
int middle = (start+end)/2;
while(end-start > 1) {
if(V[middle] <= n) {
start = middle;
if(V[middle] == n) {
maxPos = middle;
}
} else {
end = middle;
}
middle = (start+end)/2;
}
return maxPos+1;
}
int LessThan(const vector<int>& V, int n) {
int start = 0;
int end = SIZE-1;
int middle = (start+end)/2;
while(end-start > 1) {
if(V[middle] <= n) {
start = middle;
} else {
end = middle;
}
middle = (start+end)/2;
}
return start+1;
}
int BiggerThan(const vector<int>& V, int n) {
int start = 0;
int end = SIZE-1;
int middle = (start+end)/2;
while(end-start > 1) {
if(V[middle] >= n) {
end = middle;
} else {
start = middle;
}
middle = (start+end)/2;
}
return end+1;
}
int main() {
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f >> SIZE;
vector<int> V;
for(int i = 0; i < SIZE; i++){
int elem;
f >> elem;
V.push_back(elem);
}
f >> Q;
for(int i = 0; i < Q; i++) {
int q;
int n;
f >> q >> n;
if(q == 0) {
g << MaxPos(V,n) << endl;
} else if(q == 1) {
g << LessThan(V, n) << endl;
} else if(q == 2) {
g << BiggerThan(V, n) << endl;
}
}
return 0;
}