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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <bits/stdc++.h>
#include "message.h"
#include "kanapka.h"

using namespace std;

#define int long long

int NR = NumberOfNodes();
int ID = MyNodeId();
int n = GetN();

void algo() {
	int mi=0, ma=0, suma=0, res=0;
	for( int i=0; i<NR; i++ ) {
		Receive( i );
		int a = GetLL( i );
		int b = GetLL( i );
		int c = GetLL( i );
		int d = GetLL( i );
		//cout << a << " " << b << " " << c << " " << d << "\n";
		suma += a;
		res = min( res, b );
		res = min( res, suma - a + c - ma );
		ma = max( ma, suma - a + d );
		//cout << suma << " " << res << " " << ma << "\n";
		//cout << endl;
	}
	//cout << suma << "\n";
	cout << suma-res;
}

int32_t main() {
	int left = ID*((n-1)/NR+1);
	int right = (ID+1)*((n-1)/NR+1);
	right = min( right, n );
	
	vector<int> v;
	int suma=0;
	int res=0;
	int ma=0;
	int mi=0;
	//cout << " " << ID << "   " << left << " " << right << "   " << n << "\n";
	for( int i=left; i<right; i++ ) {
		v.push_back( GetTaste( i ) );
		suma += v.back();
		res = min( res, suma-ma );
		ma = max( ma, suma );
		mi = min( mi, suma );
	}
	PutLL( 0, suma );
	PutLL( 0, res );
	PutLL( 0, mi );
	PutLL( 0, ma );
	Send( 0 );
	
	if( ID != 0 ) return 0;
	
	algo();
	
	return 0;
}