1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "maklib.h"
#include "message.h"
#include <iostream>

int main() {

	if (MyNodeId() == 0){

		int N = Size();

		long long int maxSumFromBeg = 0;
		long long int maxArray = 0;
		long long int sum = 0;
		long long int currentSum = 0;

		int beg = 0;
		int end = N;

		for (int pos = beg; pos < end-1; ++pos){
			int elem = ElementAt(1);
			//if (elem >= 0){
			//	sum += elem;
			//	currentSum += elem;
			//} else {
			//	long long int substrahend = elem;
			//	//while (++pos < end && (elem = ElementAt(pos)) < 0){
			//	//	substrahend += elem;
			//	//}
			//	//--pos; //przeszlismy o jedna pozycje za daleko, wiec trzeba odjac
			//	if (sum > maxSumFromBeg) maxSumFromBeg = sum;
			//	if (currentSum > maxArray) maxArray = currentSum;
			//	if (currentSum + substrahend <= 0) currentSum = 0; //nie ma po co wracac do tamtej sekcji
			//	else currentSum += substrahend; // doliczamy wartosci ujemne i idziemy do kolejnej sekcji
			//	sum += substrahend;
			//}
		}

		if (currentSum > maxArray) maxArray = currentSum;

		//std::cout << maxArray << std::endl;

	}

	return 0;

}