Pagini recente » Cod sursa (job #176688) | Cod sursa (job #1346161) | Cod sursa (job #949469) | Cod sursa (job #793009) | Cod sursa (job #1962196)
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <string>
#include <bitset>
#include <cstdio>
#include <limits>
#include <vector>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <fstream>
#include <numeric>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int main()
{
int no_elem, no_query;
int i, q_type, val, poz;
FILE *f = fopen("cautbin.in", "r");
fscanf(f, "%d", &no_elem);
std::vector<int> v;
for (i = 1; i <= no_elem; i++){
fscanf(f, "%d", &val);
v.push_back(val);
}
fscanf(f, "%d", &no_query);
FILE *fout = fopen("cautbin.out", "w");
for (i = 0; i < no_query; i++) {
fscanf(f, "%d", &q_type);
fscanf(f, "%d", &val);
if (q_type == 0) {
poz = std::upper_bound(v.begin(), v.end(), val) - v.begin();
if ( 1 <= poz && poz <= no_elem && v[poz - 1] == val ) {
fprintf(fout, "%d\n", poz);
}
else {
fprintf(fout, "-1\n");
}
}
if (q_type == 1) {
poz = std::lower_bound(v.begin(), v.end(), val + 1) - v.begin();
fprintf(fout, "%d\n", poz);
}
if (q_type == 2) {
poz = std::upper_bound(v.begin(), v.end(), val - 1) - v.begin() + 1;
fprintf(fout, "%d\n", poz);
}
}
fclose(fout);
fclose(f);
return 0;
}