Pagini recente » Cod sursa (job #221202) | Cod sursa (job #2207278) | Cod sursa (job #179923) | Cod sursa (job #373155) | Cod sursa (job #2292913)
#include <iostream>
#include <fstream>
#include <vector>
#include <utility>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
int main()
{
vector<int> v;
vector< pair<int, int> > queries;
vector<int> min_sqrt;
int N, M, x, y, dim;
fin >> N >> M;
for (int i = 0; i < N; i++) {
fin >> x;
v.push_back(x);
}
for (int i = 0; i < M; i++) {
fin >> x >> y;
queries.push_back(make_pair(x, y));
}
dim = sqrt(N);
for (int i = 0; i < dim; i++){
min_sqrt.push_back(99999999);
for (int j = i * dim; j < (i+1) * dim; j++) {
if (min_sqrt[i] > v[j])
min_sqrt[i] = v[j];
}
}
for (int i = 0; i < M; i++) {
int f, l, s, d, m, j;
f = queries[i].first - 1;
l = queries[i].second - 1;
cout << " f l " << l << f;
if (f == l)
fout << v[f] << "\n";
else {
for (j = 0; j * dim < f; j++);
j++;
cout << " j " << j;
s = min((j - 1) * dim, l);
cout << " s " << s;
m = 999999999;
for (;dim * j <= l; j++){
m = min(m, min_sqrt[j - 1]);
cout << " min " << m;
}
cout << " j " << j;
d = max (dim * (j - 1), f);
cout << " d " << d << endl;
for (j = f; j <= s; j++){
m = min(m, v[j]);
cout << "in prima";
}
for (j = d; j <= l; j++){
m = min(m, v[j]);
cout<< "in a doua";
}
fout << m << "\n";
}
}
return 0;
}