http://www.spoj.com/problems/SGIFT/
my code is(there are no compilation errors)
#include <bits/stdc++.h>
using namespace std;
map<long long, long long> freq;
int main(){
long long t, q;
long long v;
scanf("%lld", &t);
for(int i = 0; i < t; ++i){
scanf("%lld", &v);
freq[v] += v;
}
map<long long, long long>::iterator ip = freq.begin();
ip++;
for(map<long long, long long>::iterator in = freq.begin(); in != freq.end(); ++in, ip++){
(*ip).second += (*in).second;
}
scanf("%lld", &q);
while(q--){
long long a, b;
scanf("%lld %lld", &a, &b);
map<long long, long long>::iterator lb, ub;
lb = freq.lower_bound(a);
ub = freq.upper_bound(b);
ub--;
if(lb == freq.begin()) printf("%lld\n", (*ub).second);
else{
lb--;
printf("%lld\n", (*ub).second - (*lb).second);
}
}
return 0;
}