Pagini recente » Cod sursa (job #2932372) | Cod sursa (job #1664698) | Cod sursa (job #958366) | Cod sursa (job #1045076) | Cod sursa (job #198314)
Cod sursa(job #198314)
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 2008;
const int M = 2008;
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 b[N], s[N], r[N];
void insert ( int ac, int bc, int sc ) {
if (!b[ac]) {
b[ac] = bc;
s[ac] = sc;
} else
if (b[ac] > bc) {
insert(bc+1,b[ac],s[ac]-sc);
b[ac] = bc;
s[ac] = sc;
} else
if (b[ac] < bc) {
insert(b[ac]+1,bc,sc-s[ac]);
}
}
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);
insert(v[i].a,v[i].b,v[i].s);
}
for (int i = n; i; --i) {
if (b[i]) {
int ss = 0;
for (int j = i+1; j <= b[i]; ++j) ss += r[j];
r[i] = s[i] - ss;
}
}
for (int i = 1; i <= n; ++i) printf("%d ",r[i]);
return 0;
}