//小熊,通过百分之40,这是修改后的代码,不确定对不对。
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
static bool compare(vector<int> a, vector<int> b) {
if (a.empty() || b.empty())
return true;
return a[0] >= b[0];
}
int gettheclosestvalue(vector<int> &value, int target) {
if (value.empty()) return 0;
int res = 0;
int index = 0;
for (int i = 0; i < value.size(); i++) {
if (value[i] <= target) {
if (res < value[i]) {
res = value[i];
index = i;
}
}
}
if (index != 0) value[index] = 0;
else {
if (target >= value[0] && res == value[0])
value[index] = 0;
}
return res;
}
int getindex(vector<vector<int>> nums, int target) {
for (int i = 0; i < nums.size(); i++) {
if (nums[i][0] == target)
return i;
}
return -1;
}
void f(vector<int> &value, vector<vector<int>> &bear) {
vector<vector<int>> beartemp = bear;
sort(bear.begin(), bear.end(), compare);
for (int i = 0; i < bear.size(); i++) {
int temp = gettheclosestvalue(value, bear[i][1]);
while (temp) {
bear[i][1] -= temp;
temp = gettheclosestvalue(value, bear[i][1]);
}
}
for (int i = 0; i < bear.size(); i++) {
printf("%d\n", bear[getindex(bear, beartemp[i][0])][1]);
}
}
int main() {
int n, m, i = 0;
cin >> n;//小熊的数量
cin >> m;//糖的数量
vector<int> value(m);//糖的饥饿值
vector<vector<int> > bear(n, vector<int>(2));//熊的战斗力和饥饿值
while (i < m)
scanf("%d", &value[i++]);
i = 0;
while (i < n) {
scanf("%d", &bear[i][0]);
scanf("%d", &bear[i++][1]);
}
f(value, bear);
return 0;
}