Pagini recente » Cod sursa (job #2564697) | Cod sursa (job #1288570) | Cod sursa (job #1722666) | Cod sursa (job #1507573) | Cod sursa (job #2021230)
#include <bits/stdc++.h>
#define r first
#define val second
const int MAXN = (int) 2e3;
std::vector < std::pair <int, int> > pos[MAXN + 1];
int sol[MAXN + 1];
int main() {
FILE *fi, *fout;
int i, j, n, m, l, r, val;
fi = fopen("reconst.in" ,"r");
fout = fopen("reconst.out" ,"w");
fscanf(fi,"%d %d " ,&n,&m);
for(i = 1; i <= m; i++) {
fscanf(fi,"%d %d %d " ,&l,&r,&val);
pos[l].push_back({r, val});
}
for(i = 1; i <= n; i++) {
std::sort(pos[i].begin(), pos[i].end());
for(j = 1; j < pos[i].size(); j++)
if(pos[i][0].r != pos[i][j].r && pos[i][0].r < n) {
pos[pos[i][0].r + 1].push_back({pos[i][j].r, pos[i][j].val - pos[i][0].val});
}
while(pos[i].size() > 1)
pos[i].pop_back();
}
for(i = n; i >= 1; i--) {
if(!pos[i].empty()) {
int sum = 0;
for(j = i + 1; j <= pos[i][0].r; j++)
sum += sol[j];
sol[i] = pos[i][0].val - sum;
}
}
for(i = 1; i <= n; i++)
fprintf(fout,"%d " ,sol[i]);
fclose(fi);
fclose(fout);
return 0;
}