Cod sursa(job #458841)

Utilizator darrenRares Buhai darren Data 26 mai 2010 16:32:31
Problema Reconst Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<fstream>
#include<algorithm>
#include<iterator>
using namespace std;

void read();
void write();
void add(int a, int b, int sm);
inline int abs(int x)
{
	return x < 0 ? x * -1 : x;
}

int n, m;
int s[2001], t[2001];

int main()
{
	read();
	write();
	return 0;
}

void read()
{
	ifstream fin("reconst.in");
	fin >> n >> m;
	int i1, i2, sm;
	
	for (int i = 1; i <= m; ++i)
	{
		fin >> i1 >> i2 >> sm;
		add(i1, i2, sm);
	}
	for (int i = n - 1; i >= 1; --i)
		for (int j = i + 1; j <= t[i]; ++j)
			s[i] -= s[j];
}

void write()
{
	ofstream fout("reconst.out");
	copy(s + 1, s + n + 1, ostream_iterator<int>(fout, " "));
}

void add(int a, int b, int sm)
{
	if (t[a] == 0)
	{
		t[a] = b;
		s[a] = sm;
	}
	else if (b > t[a])
		add(t[a] + 1, b, sm - s[a]);
	else if (t[a] > b)
		add(b + 1, t[a], s[a] - sm);
}