Cod sursa(job #274506)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 9 martie 2009 20:09:00
Problema Reconst Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>
#define Nmax 2005

FILE *fin=fopen("reconst.in","r"),
    *fout=fopen("reconst.out","w");

int N,M,A[Nmax];
long long S[Nmax];
struct bla{int b,s;} T[Nmax];

int main(){
    fscanf(fin,"%d %d",&N,&M);
    for(int i=1;i<=M;i++){
        int x,y,z;
        fscanf(fin,"%d %d %d",&x,&y,&z);
        while(T[x].b&&T[x].b!=y){
            if(T[x].b<y){
                z-=T[x].s;
                x=T[x].b+1;
            }
            else{
                z=T[x].s-z;
                x=y+1;
                y=T[x].b;
            }
        }
        if(T[x].b!=y)
            T[x].b=y,T[x].s=z;
    }

    for(int i=N;i;--i){
        if(T[i].b)
            A[i]=T[i].s-(S[i+1]-S[T[i].b+1]);
        S[i]=(long long)A[i]+S[i+1];
    }

    for(int i=1;i<N;i++)
        fprintf(fout,"%d ",A[i]);
    fprintf(fout,"%d\n",A[N]);

    fclose(fin);
    fclose(fout);
    return 0;

}