Cod sursa(job #319000)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 30 mai 2009 11:20:32
Problema Reconst Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
struct dop{long x,y,s;}a;
long n,m,i,poz[2050],sum[2050],suma[2050],x;
int main()
{
 freopen("reconst.in","r",stdin);
 freopen("reconst.out","w",stdout);
 scanf("%ld%ld",&n,&m);
 for(i=1;i<=m;++i)
   {scanf("%ld%ld%ld",&a.x,&a.y,&a.s);
    while(poz[a.y]>0&&a.y>=a.x)
      if(a.x>poz[a.y]){x=poz[a.y];a.s=sum[a.y]-a.s;a.y=a.x-1;a.x=x;}
      else if(a.x<poz[a.y]){a.s-=sum[a.y];a.y=poz[a.y]-1;}
      else a.x=2,a.y=1;
    if(a.x<=a.y)
      poz[a.y]=a.x,sum[a.y]=a.s;}
 suma[0]=0;
 for(i=1;i<=n;++i)
    {if(poz[i])printf("%ld ",(x=sum[i]-suma[i-1]+suma[poz[i]-1]));
       else printf("0 ");
     suma[i]=suma[i-1]+x;}
 printf("\n");
 return 0;
}