Cod sursa(job #530535)

Utilizator MiuMihaiMiu Mihai MiuMihai Data 7 februarie 2011 22:09:33
Problema Reconst Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <algorithm>
#include <stdio.h>
#include <vector>

#define MAX 2048
#define pb push_back
#define mp make_pair
#define f first
#define s second

using namespace std;

int n, m, a, b, s;
vector <pair <short, short> > vctNr[MAX];
int pus[MAX];

int main()
{
	freopen("reconst.in", "r", stdin);
	freopen("reconst.out", "w", stdout);

	scanf("%d %d", &n, &m);

	for (int i = 1; i <= m; i++)
	{
		scanf("%d %d %d", &a, &b, &s);

		vctNr[a].pb(mp(b, s));
	}

	for (int i = 1; i <= n; i++)
	{
		sort(vctNr[i].begin(), vctNr[i].end());

		for (int j = 1; j < vctNr[i].size(); j++)
			if (vctNr[i][j].f > vctNr[i][0].f)
				vctNr[vctNr[i][0].f + 1].pb(mp(vctNr[i][j].f, vctNr[i][j].s - vctNr[i][0].s));
	}

	for (int i = n; i; i--)
	{
		int s = 0;
		for (int j = i + 1; j <= vctNr[i][0].f; j++)
			s += pus[j];

		pus[i] = vctNr[i][0].s - s;
	}

	for (int i = 1; i <= n; i++)
		printf("%d ", pus[i]);

	fclose(stdin);
	fclose(stdout);
	return 0;
}