Pagini recente » Cod sursa (job #812920) | Cod sursa (job #876005) | Cod sursa (job #2003633) | Cod sursa (job #2088566) | Cod sursa (job #197856)
Cod sursa(job #197856)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define N 2010
int n,m;
struct abc
{
int a,b,s;
};
abc v[N];
int sir[N];
bool compar(const abc &x,const abc &y)
{
if(x.a<y.a)
return true;
if(x.a>y.a)
return false;
if(x.b<y.b)
return true;
return false;
}
bool verif()
{
int i;
bool ok=false;
for(i=1; (i<m)&&(!ok); i++)
{
if(v[i].a==v[i-1].a)
{
ok=true;
if(v[i].b==v[i-1].b)
{
swap(v[i],v[m-1]);
m--;
}
else
{
v[i].a=v[i-1].b+1;
v[i].s-=v[i-1].s;
}
}
}
if(ok)
sort(v,v+m,compar);
return ok;
}
bool compar1(const abc &x,const abc &y)
{
if(x.b<y.b)
return true;
if(x.b>y.b)
return false;
if(x.a<y.a)
return true;
return false;
}
void determin()
{
int i,j,a,b,s;
sort(v,v+m,compar1);
for(i=m-1; i>=0; i--)
{
s=0;
a=v[i].a;
b=v[i].b;
for(j=a; j<=b; j++)
s+=sir[j];
sir[v[i].a]=v[i].s-s;
}
}
void scrie()
{
int i;
for(i=1; i<n; i++)
printf("%d ",sir[i]);
printf("%d\n",sir[n]);
}
int main()
{
freopen("reconst.in","r",stdin);
freopen("reconst.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=0; i<m; i++)
scanf("%d%d%d",&v[i].a,&v[i].b,&v[i].s);
sort(v,v+m,compar);
bool ok=true;
while(ok)
ok=verif();
determin();
scrie();
return 0;
}