Pagini recente » Cod sursa (job #1065064) | Cod sursa (job #2966645) | Cod sursa (job #2787331) | Rating Andrei Mocian (andreimocian) | Cod sursa (job #2756764)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("reconst.in");
ofstream fout("reconst.out");
struct seg {
int l, r, sum;
};
const int MAXN = 2e3 + 1;
vector<pair<int,int>> pos[MAXN], aux[MAXN];
pair<int,int> v[MAXN];
int a[MAXN];
int main() {
int n, m;
fin >> n >> m;
for (int i = 0; i < m; ++i) {
int l, r, sum;
fin >> l >> r >> sum;
pos[l].emplace_back(r, sum);
}
bool ok = true;
while (ok) {
ok = false;
for (int i = 1; i <= n; ++i)
aux[i].clear();
for (int i = 1; i <= n; ++i) {
v[i] = make_pair(-1, -1);
if (!pos[i].empty()) {
sort(pos[i].begin(), pos[i].end());
v[i] = pos[i][0];
aux[i].emplace_back(pos[i][0]);
for (int j = 1; j < (int)pos[i].size(); ++j)
if (pos[i][j - 1].first < pos[i][j].first) {
ok = true;
pair<int,int> p;
p = make_pair(pos[i][j].first, pos[i][j].second - pos[i][j - 1].second);
int poz = pos[i][j - 1].first + 1;
aux[poz].emplace_back(p);
v[poz] = p;
}
}
}
for (int i = 1; i <= n; ++i)
pos[i] = aux[i];
}
for (int i = n; i > 0; --i)
if (v[i].first != -1) {
a[i] = v[i].second;
for (int j = i + 1; j <= v[i].first; ++j)
a[i] -= a[j];
}
for (int i = 1; i <= n; ++i)
fout << a[i] << ' ';
fout << '\n';
fin.close();
fout.close();
return 0;
}