33,311
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<algorithm>
using namespace std;
const int MAX_K = 10000;
struct Point {
int x, y;
long long v = 0;
}matrix[MAX_K]; //定义稀疏矩阵
int len = 0; //稀疏矩阵元素个数
void insert(const int& x, const int& y, const long long& v) {
for (int j = 0; j < len; j++) {
if (matrix[j].x == x && matrix[j].y == y) {
matrix[j].v += v; //如果是之前已经录入过的坐标:+v
return;
}
}
matrix[len++] = { x,y,v }; //创建新坐标
}
long long getSum(const int& row, const int& col) {
long long sum = 0;
for (int i = 0; i < len; i++) {
if (matrix[i].x <= row && matrix[i].y <= col)
sum += matrix[i].v;
}
return sum;
}
int main() {
int n, k, a, b, x, y;
long long v;
cin >> n >> k;
for (int i = 0; i < k; i++) {
cin >> x >> y >> v;
insert(x, y, v);
}
cin >> a >> b;
cout << getSum(a, b);
return 0;
}