Submission
Status:
[PPPPxSSSSSSSSSSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: Nathako9n
Problemset: ฮีโร่และมอนสเตอร์
Language: cpp
Time: 0.050 second
Submitted On: 2026-02-08 10:57:05
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
int n, m;
const int N = 200005;
ll ar[N+4];
pair<ll, ll> br[N+3];
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
if (!(cin >> n >> m)) return 0;
for (int i = 1; i <= n; i++) cin >> ar[i];
for (int i = 1; i <= m; i++) cin >> br[i].first >> br[i].second;
sort(br + 1, br + m + 1);
// Prefix sum of the values
for (int i = 1; i <= m; i++) br[i].second += br[i-1].second;
for (int i = 1; i <= n; i++) {
// Find first element > ar[i]. We use a very large second value to act as infinity.
auto it = upper_bound(br + 1, br + m + 1, make_pair(ar[i], (ll)2e18));
// Move back one to get the sum of all elements <= ar[i]
cout << prev(it)->second << endl;
}
return 0;
}