Pagini recente » Cod sursa (job #1063198) | Cod sursa (job #1481237) | Cod sursa (job #919983) | Cod sursa (job #2531214) | Cod sursa (job #484114)
Cod sursa(job #484114)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define ll long long
#define minim(a,b) (a<b ? a : b)
#define maxim(a,b) (a>b ? a : b)
ll s[2005];
int n,m,poz;
ll p[2005];
struct per
{
int x,y;
ll z;
};
per v[2005];
inline int cmp(const per& a,const per& b)
{
return (a.y<b.y);
}
int main ()
{
int i,p1,p2;
per aux;
freopen("reconst.in","r",stdin);
freopen("reconst.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
scanf("%d%d%lld",&v[i].x,&v[i].y,&v[i].z);
sort(v+1,v+m+1,cmp);
for(i=2;i<=m;i++)
{
poz=i;
while(poz>=1 && v[poz].y<=v[poz-1].y)
if(v[poz].y==v[poz-1].y)
{
if(v[poz].x==v[poz-1].x)
break;
if(v[poz].x<v[poz-1].x)
v[poz].z-=v[poz-1].z;
else
v[poz].z=v[poz-1].z-v[poz].z;
p1=minim(v[poz].x,v[poz-1].x);
p2=maxim(v[poz].x,v[poz-1].x)-1;
v[poz].x=p1;v[poz].y=p2;
}
else
{
aux=v[poz];
v[poz]=v[poz-1];
v[poz-1]=aux;
poz--;
}
}
poz=1;
for(i=1;i<=n;i++)
{
if(i!=v[poz].y)
{
s[i]=s[i-1]+p[i];
continue;
}
p[i]=v[poz].z-(s[i-1]-s[v[poz].x-1]);
s[i]=s[i-1]+p[i];
while(v[poz].y==v[poz+1].y)
poz++;
poz++;
}
for(i=1;i<=n;i++)
printf("%lld ",p[i]);
printf("\n");
return 0;
}