Cod sursa(job #253283)

Utilizator 630r63Ilinca George Mihai 630r63 Data 5 februarie 2009 17:02:19
Problema Reconst Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
 #include <stdio.h>  
 #include <math.h>  
   
 #define MAXN 2010  
   
 long a, b, c, n, m, sir[MAXN], sum[MAXN], last[MAXN], i;  
   
 void insert(long a, long b, long s);  
   
 void insert(long a, long b, long s) {  
     if (b < a) {  
         return;  
     }  
     if (!last[a]) {  
         last[a]=b;  
         sum[a]=s;  
         return;  
     }  
       
     if (last[a] < b) {  
         insert(last[a] + 1, b , s - sum[a]);  
     } else {  
         insert(b + 1, last[a], sum[a] - s);  
         last[a] = b;  
         sum[a] = s;  
     }  
 }  
   
 int main() {  
     freopen("reconst.in", "r", stdin);  
     freopen("reconst.out", "w", stdout);  
     scanf("%ld%ld", &n, &m);  
     for(i = m; i >= 1; --i) {  
         scanf("%ld%ld%ld", &a, &b, &c);  
         insert(a, b, c);  
     }  
       
     for (i = n; i > 0; --i) {  
         if(last[i]) {  
             sir[i] = sum[i] + sir[last[i] + 1];  
         } else {  
             sir[i] = sir[i + 1];  
         }  
     }  
     for (i = 1; i < n; ++i) {  
         printf("%ld ", sir[i] - sir[i + 1]);  
     }  
     printf("%ld\n", sir[n]);  
     return 0;  
}