Pagini recente » Cod sursa (job #1526241) | Cod sursa (job #1688207) | Cod sursa (job #1938500) | Cod sursa (job #3209930) | Cod sursa (job #1982106)
#include <cstdio>
const int MAX_N = 2000;
int prec[1+MAX_N], left[1+MAX_N], suma[1+MAX_N];
inline void swap(int &a, int &b) {
int aux = a;
a = b;
b = aux;
}
inline void simplify(int l, int r, int s) {
while(r > 0 && left[r] != 0) {
if(l > left[r]) {
swap(l, left[r]);
swap(s, suma[r]);
} else if(l == left[r])
l = r = 0;
s = s - suma[r];
r = left[r] - 1;
}
left[r] = l;
suma[r] = s;
}
int main() {
int n, m, l, r, s;
FILE *fin = fopen("reconst.in", "r");
fscanf(fin, "%d%d", &n, &m);
for(int i = 0; i < m; ++i) {
fscanf(fin, "%d%d%d", &l, &r, &s);
simplify(l, r, s);
}
fclose(fin);
for(int i = 1; i <= n; ++i)
printf("%d %d %d\n", left[i], i, suma[i]);
FILE *fout = fopen("reconst.out", "w");
for(int i = 1; i <= n; ++i) {
if(left[i] != 0)
prec[i] = prec[left[i] - 1] + suma[i];
fprintf(fout, "%d ", prec[i] - prec[i - 1]);
}
fclose(fout);
return 0;
}
//George Rapeanu te pup :*