Cod sursa(job #198134)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 8 iulie 2008 19:40:57
Problema Reconst Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
# include <stdio.h>
# include <vector>

using namespace std;

# define FIN "reconst.in"
# define FOUT "reconst.out"
# define MAXN 2001

int E[MAXN];
int S[MAXN];
int N,M,a,b,c,i,aux,ok;
int rez[MAXN];

    int main()
    {
        freopen(FIN,"r",stdin);
        freopen(FOUT,"w",stdout);
        
        scanf("%d %d",&N,&M);
        for (i = 1; i <= M; ++i)
          {
               scanf("%d %d %d",&a,&b,&c);
               ok = 0;
               while (ok == 0)
                 {
                     if (E[a] == b || a > b) break;
         
                     if (E[a] == 0) 
                       {
                          E[a] = b;
                          S[a] = c;
                          break;
                       }
                     if (E[a] > b)
                       {
                          aux = E[a];
                          E[a] = b;
                          b = aux;
                          aux = S[a];
                          S[a] = c;
                          c = aux;
                       }
                     c = c-S[a];
                     a = E[a]+1;
                 }
          }
        
        int sum, j;
        for (i = N; i >= 1; --i)
          if (E[i] != 0)
            {
                sum = 0;   
                for (j = i+1; j <= E[i]; ++j)
                  sum += rez[j];
                rez[i] = S[i] - sum;
            }
            
        for (i = 1; i <= N; ++i)
          printf("%d ",rez[i]);
        
        return 0;
    }