Cod sursa(job #274520)

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

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

int N,M;
long long A[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,aux;
        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;
                aux=x;
                x=y+1;
                y=T[aux].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+A[T[i].b+1];
        else
            A[i]=A[i+1];
    }

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

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

}