Cod sursa(job #291254)

Utilizator vladbBogolin Vlad vladb Data 29 martie 2009 16:43:28
Problema Reconst Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<fstream>

using namespace std;

ifstream fin("reconst.in");
ofstream fout("reconst.out");

struct inter { long x,y,s;
             } a[2001];
long n,m,b[2001],c[2001],sol[2001],sum[2001];

int main()
{    long i,n1,n2;
     fin>>n>>m;
     for(i=1;i<=m;i++)
         fin>>a[i].x>>a[i].y>>a[i].s;
     for(i=1;i<=m;i++)
     {   while(b[a[i].y]&&a[i].x<=a[i].y)
         {    if(b[a[i].y]>=a[i].x)
                  a[i].s-=c[a[i].y];
                else {   n1=b[a[i].y];
                         n2=c[a[i].y]-a[i].s;
                         c[a[i].y]=a[i].s;
                         b[a[i].y]=a[i].x;
                         a[i].x=n1;
                         a[i].s=n2;
                      }
                a[i].y=b[a[i].y]-1;
         }
         if(a[i].y>=a[i].x)
         {    b[a[i].y]=a[i].x;
              c[a[i].y]=a[i].s;
         }
     }
     for(i=1;i<=n;i++)
     {    if(b[i]) 
               sol[i]=c[i]-sum[i-1]+sum[b[i]-1];
          sum[i]=sum[i-1]+sol[i];
     }
     for(i=1;i<=n;i++)
         fout<<sol[i]<<" ";
     fin.close();
     fout.close();
     return 0;
}