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
#include <iostream>
#include "kanapka.h"
#include "message.h"

using namespace std;

int main() {

long long n=GetN();
long long GetTaste(long long i);

if(MyNodeId()!=0){
long long k, n, b,S=0,M,wynik=0;
long long poczatek = (MyNodeId() * n) / NumberOfNodes();
long long koniec = ((MyNodeId() + 1) * n) / NumberOfNodes();

for (long long i = 0; i <= n; ++i) {// sumowanie wszystkich liczb  
      long long kolejna=GetTaste(i);
      S=S+kolejna;
      }
M=S;
for (long long i = poczatek; i < koniec; ++i){//dlugosc lancucha
    for(int l=0; l<n-i+1; l++){// przesuniecie
        S=M;
        for(int k=l; k<l+i; k++){// odejmowanie lancucha
            long long kolejna2=GetTaste(k);
            S=S-kolejna2;}
        if(S>wynik){wynik=S;}
      }
    }
  PutLL(0, wynik);
    Send(0);    
}

if(MyNodeId()==0){
long long o=0, wynik=0;
    for( int i = 1; i < NumberOfNodes(); i++ ) {
        Receive( i );
        wynik = GetLL( i );
        
        if( wynik > o )
            o = wynik;
          }
cout << o << '\n';
}

    return 0;
}