Pagini recente » Cod sursa (job #2555546) | Cod sursa (job #3284400) | Cod sursa (job #1187661) | Cod sursa (job #160830) | Cod sursa (job #198068)
Cod sursa(job #198068)
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 2000;
const int M = 2000;
struct interval { int a,b,s; };
bool operator< ( const interval &a, const interval &b ) { return (a.a == b.a) ? (a.b < b.b) : (a.a < b.a); }
int n,m;
interval v[M];
int start[N];
int r[N];
int main() {
freopen("reconst.in","rt",stdin);
freopen("reconst.out","wt",stdout);
scanf("%d %d",&n,&m);
for (int i = 0; i < m; ++i) {
scanf("%d %d %d",&v[i].a,&v[i].b,&v[i].s);
--v[i].a; --v[i].b;
}
sort(v,v+m);
for (int i = 0; i < m; ++i) start[i] = -1;
for (int i = 0; i < m; ++i) {
while (start[v[i].a] != -1 && v[i].a <= v[i].b) {
v[i].s -= v[start[v[i].a]].s;
v[i].a = v[start[v[i].a]].b + 1;
}
if (v[i].a <= v[i].b) start[v[i].a] = i;
}
for (int i = n-1; i >= 0; --i) {
if (start[i] != -1) {
int ss = 0;
for (int j = i+1; j <= v[start[i]].b; ++j) ss += r[j];
r[i] = v[start[i]].s - ss;
}
}
for (int i = 0; i < n; ++i) printf("%d ",r[i]);
return 0;
}