#include<bits/stdc++.h>
using
namespace
std;
int
* createPrefixSum(
int
ar[],
int
n) {
int
* prefix_sum =
new
int
[n];
prefix_sum[0] = ar[0];
for
(
int
i = 1; i < n; i++) {
prefix_sum[i] = prefix_sum[i-1] + ar[i];
}
return
prefix_sum;
}
int
sumLessThanX(
int
ar[],
int
x,
int
prefix_sum[],
int
n) {
int
i = 0;
while
(i < n && ar[i] < x) {
i++;
}
if
(i == n) {
return
0;
}
return
prefix_sum[i-1];
}
int
sumGreaterThanY(
int
ar[],
int
y,
int
prefix_sum[],
int
n) {
int
i = n-1;
while
(i >= 0 && y < ar[i]) {
i--;
}
if
(i < 0) {
return
0;
}
return
prefix_sum[n-1] - prefix_sum[i];
}
void
solve(
int
ar[],
int
x,
int
y,
int
prefix_sum[],
int
n) {
int
ltx = sumLessThanX(ar, x, prefix_sum, n);
int
gty = sumGreaterThanY(ar, y, prefix_sum, n);
cout << ltx + gty << endl;
}
void
print_l(
int
lb,
int
ub) {
cout <<
"sum of integers less than "
<< lb <<
" and greater than "
<< ub <<
" is "
;
}
int
main() {
int
ar[] = {3, 6, 6, 12, 15};
int
n =
sizeof
(ar) /
sizeof
(ar[0]);
int
* prefix_sum = createPrefixSum(ar, n);
int
q1x = 5;
int
q1y = 12;
print_l(q1x, q1y);
solve(ar, q1x, q1y, prefix_sum, n);
int
q2x = 7;
int
q2y = 8;
print_l(q2x, q2y);
solve(ar, q2x, q2y, prefix_sum, n);
return
0;
}