Cod sursa(job #235197)

Utilizator katakunaCazacu Alexandru katakuna Data 23 decembrie 2008 00:44:00
Problema Reconst Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<stdio.h>

int n,k,i,a[2111],b[2111],s[2111],S,x,y;

void add(int x,int y,int S){

  if(!b[x]){
  b[x]=y;
  s[x]=S;
  }

  else{

    if(b[x]==y)
    return ;

    if(b[x] > y ){
    add(y+1, b[x], s[x] - S);
    b[x]=y;
    s[x]=S;
    }

    else{
    add(b[x]+1 ,y ,S - s[x]  );
    }
    
  }

}


int main(){

FILE *f=fopen("reconst.in","r");
fscanf(f,"%d %d",&n,&k);

  for(i=1;i<=k;i++){
  fscanf(f,"%d %d %d",&x,&y,&S);
  add(x,y,S);
  }

fclose(f);

  for(i=n;i>=1;i--){
      if(b[i]){
      a[i]=s[i] + a[ b[i] + 1 ];
      }

      else
      a[i]=a[i+1];
  }

FILE *g=fopen("reconst.out","w");
  for(i=1;i<=n;i++)
  fprintf(g,"%d\n",a[i]-a[i+1]);
fclose(g);

return 0;
}