有没有佬可以解答一下K题为什么要开3e5的空间啊,我感觉5e5就够但是过不了TAT

```#include<bits/stdc++.h>
using namespace std;
#define endl  "\n"
#define ll long long
#define int long long
#define fi first
#define se second
const int N=6e5+10;
const ll mod=998244353;
int num[N];
int a[N],s[N];//a 存储坐标插入的值    s 存储数组a的前缀和
vector<int> alls;  //存储(所有与插入和查询有关的)坐标
vector<pair<int, int> > add, query; //存储插入和询问操作的数据
int find(int x) { //返回的是输入的坐标的离散化下标
    int l = 0, r = alls.size() - 1;
    while (l < r) {
        int mid = l + r >> 1;
        if (alls[mid] >= x) r = mid;
        else l = mid + 1;
    }
    return r + 1;
}
void solve() {
    int n,m;cin>>n>>m;
    for(int i=1;i<=n;i++){
        int l,r,a;cin>>l>>r>>a;
        add.push_back({l, a});
        add.push_back({r+1, -a});
        alls.push_back(l);alls.push_back(r+1);
    } 
    for(int i=1;i<=m;i++){
    	cin>>num[i];
    	alls.push_back(num[i]);
	}
    sort(alls.begin(), alls.end());  //排序,去重
    alls.erase(unique(alls.begin(), alls.end()), alls.end());   	
    for (auto item : add) {  //执行前n次插入操作
        int x = find(item.first);
        a[x] += item.second;
    }
    for (int i = 1; i <= alls.size(); i++) s[i] = s[i-1] + a[i];  //前缀和
    for(int i=1;i<=m;i++){
    	cout<<s[find(num[i])]<<endl;
	}

}

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int _=1;
	while(_--) {
		solve();
	}
}