Cod sursa(job #197749)

Utilizator wefgefAndrei Grigorean wefgef Data 5 iulie 2008 18:17:28
Problema Reconst Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstring>
#include <fstream>
using namespace std;

const char FILEIN[] = "reconst.in";
const char FILEOUT[] = "reconst.out";
const int MAX_N = 2048;

ifstream fin(FILEIN);
ofstream fout(FILEOUT);
int N, M;
int End[MAX_N];
int Sum[MAX_N];
int V[MAX_N];

void Insert(int A, int B, int R) {
	if (End[A] == -1) {
		End[A] = B;
		Sum[A] = R;
		return;
	}
	if (End[A] < B)
		Insert(End[A]+1, B, R-Sum[A]);
	if (End[A] > B) {
		Insert(B+1, End[A], Sum[A]-R);
		End[A] = B;
		Sum[A] = R;
	}
}

int main() {
	memset(End, -1, sizeof(End));

	fin >> N >> M;
	for (int i = 0; i < M; ++i) {
		int A, B, R;
		fin >> A >> B >> R;
		Insert(A, B, R);
	}

	for (int i = N; i; --i)
		if (End[i] > -1) {
			int sum = 0;
			for (int j = i; j <= End[i]; ++j)
				sum += V[j];
			V[i] = Sum[i]-sum;
		}

	for (int i = 1; i <= N; ++i)
		fout << V[i] << " ";
}