Pagini recente » Cod sursa (job #2194248) | Cod sursa (job #1200023) | Cod sursa (job #259011) | Cod sursa (job #1347522) | Cod sursa (job #2423479)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin ("reconst.in");
ofstream cout ("reconst.out");
struct Seg {
int l, r, sum;
bool operator < (const Seg other) {
return r < other.r;
}
};
int n, m;
Seg s[2005];
int sol[2005];
vector <int> v[2005];
int main() {
cin >> n >> m;
for(int i = 1; i <= m; i++)
cin >> s[i].l >> s[i].r >> s[i].sum, v[s[i].l].push_back(i);
for(int i = 1; i <= n; i++) {
if(v[i].size() > 1) {
sort(v[i].begin(), v[i].end());
int poz = v[i][0];
for(int j = 1; j < v[i].size(); j++) {
if(s[poz].r != s[v[i][j]].r) {
s[v[i][j]].l = s[poz].r + 1;
s[v[i][j]].sum -= s[poz].sum;
v[s[v[i][j]].l].push_back(v[i][j]);
}
}
while(v[i].size() > 1)
v[i].pop_back();
}
}
for(int i = n; i >= 1; i--) {
if(v[i].size()) {
int sum = 0;
for(int j = s[v[i][0]].l + 1; j <= s[v[i][0]].r; j++)
sum += sol[j];
sol[i] = s[v[i][0]].sum - sum;
}
}
for(int i = 1; i <= n; i++)
cout << sol[i] << " ";
return 0;
}