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
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include<iostream>
#include<vector>
#include "kanapka.h"
#include "message.h"
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
long long int N;
N=GetN();
//cout<<"podaj N\n";
//cin>>N;
vector<int>tab;
long long int Nodes;
Nodes=NumberOfNodes();
//cout<<"podaj NumberOfNodes\n";
//cin>>Nodes;
long long int ID;
ID=MyNodeId();
//cout<<"podaj ID\n";
//cin>>ID;
//for(int i2=0;i2<9;i2++)
//{
	//cout<<"\t"<<i2<<"\n";
	//ID=i2;
if((ID!=0)&&(ID!=Nodes-1))
{
	for(long long int i=((long long int)(N/(Nodes-1)))*(ID-1);i<((long long int)(N/(Nodes-1)))*(ID);i++)
	{
	//	cout<<i<<"\n";
	tab.push_back(GetTaste(i));
	}
}
//}
if(ID==Nodes-1)
{
//cout<<"\t9\n";
for(long long int i=((long long int)(N/(Nodes-1)))*(Nodes-2);i<N;i++)
{
	//cout<<i<<"\n";
	tab.push_back(GetTaste(i));
}
}

long long int suma,min,kon,kon2,min2;
min=0;
min2=0;
kon=0;
kon2=0;
suma=0;
if(ID!=0)
{

for(int i=tab.size()-1;i>=0;i--)
{
	suma+=tab[i];
	kon2+=tab[i];
	if(kon2<kon)
	{
		kon=kon2;
	}
	if(min2+tab[i]<0)
	{
		min2+=tab[i];
	}
	else
	{
		min2=0;
	}
	if(min2<min)
	{
		min=min2;
	}
}
PutLL(0,suma);
Send(0);
PutLL(0,kon);
Send(0);
PutLL(0,min);
Send(0);
}
long long int suma3,min3,kon3,akt;
akt=0;
if(ID==0)
{
	for(int i=1;i<Nodes;i++)
	{
		Receive(i);
		suma3=GetLL(i);
		Receive(i);
		kon3=GetLL(i);
		Receive(i);
		min3=GetLL(i);
		suma+=suma3;
		if(akt+suma3<0)
		{
			akt+=suma3;
		}
		else
		{
			akt=0;
		}
		if(kon3<akt)
		{
			akt=kon3;
		}
		if(akt<min)
		{
			min=akt;
		}
		if(min3<min)
		{
			min=min3;
		}
	}
	cout<<suma-min;
	
	
}




return 0;
}