Submission

Status:
[PPPPPPPPPPPPPPPPPPPP]

Score: 100

User: Nightingale

Problemset: ฮีโร่และมอนสเตอร์

Language: cpp

Time: 0.302 second

Submitted On: 2025-03-31 23:46:45

#include <bits/stdc++.h>
#define int long long
using namespace std;
int32_t main() 
{
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int a,b;
  cin >> a >> b;
  int idx = 0;
  vector<pair<int,int>> hero(a);
  vector<pair<int,int>> mons(b);
  vector<int> coin(b);
  vector<int> reward(a);
  for(int i=0;i<a;i++){
    int c;
    cin >> c;
    hero[i] = {c,i};
  }
  for(int i=0;i<b;i++){
    int c,d;
    cin >> c >> d;
    mons[i] = {c,d};
  }
  sort(hero.begin(),hero.end(),greater<pair<int,int>>());
  sort(mons.begin(),mons.end(),greater<pair<int,int>>());
  coin[b-1] = mons[b-1].second;
  for(int i=b-2;i>=0;i--){
    coin[i] = coin[i+1]+mons[i].second;
  }
  for(int i=0;i<b;i++){
    if(idx==a) break;
    if(hero[idx].first>=mons[i].first){
      reward[hero[idx].second] = coin[i];
      i--;
      idx++;
    }
  }
  for(int i=0;i<a;i++){
    cout << reward[i] << '\n';
  }
}