#include "message.h"
#include "maklib.h"
#include<iostream>
using namespace std;
int main()
{
int N=Size();
int pocz,kon;
if(MyNodeId() > 0)
{
pocz=((MyNodeId()-1)*N)/(NumberOfNodes()-1);
kon=((MyNodeId() ) * N) /(NumberOfNodes()-1);
long long int sum=0;
long long int sum2=0;
long long int max2=0;
for(int i=pocz;i<kon;i++)
{
sum2=sum2+ElementAt(i+1);
if(max2<sum2)
{
max2=sum2;
}
if(sum+ElementAt(i+1)>0)
{
sum=sum+ElementAt(i+1);
}
else
{
sum=0;
}
}
PutLL(0,max2);
PutLL(0,sum);
PutLL(0,sum2);
Send(0);
}
else
{
long long int odeb;
long long int sumk=0;
long long int maxim=0;
long long int max22=0;
long long int sum22;
for(int i=1;i<NumberOfNodes();i++)
{
Receive(i);
max22=GetLL(i);
if(maxim<sumk+max22)
{
maxim=sumk+max22;
}
odeb=GetLL(i);
sum22=GetLL(i);
if(sumk+sum22>odeb)
{
sumk=sumk+sum22;
}
else
{
sumk=odeb;
}
if(sumk>maxim)
{
maxim=sumk;
}
}
cout<<maxim;
}
return 0;
}
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 | #include "message.h" #include "maklib.h" #include<iostream> using namespace std; int main() { int N=Size(); int pocz,kon; if(MyNodeId() > 0) { pocz=((MyNodeId()-1)*N)/(NumberOfNodes()-1); kon=((MyNodeId() ) * N) /(NumberOfNodes()-1); long long int sum=0; long long int sum2=0; long long int max2=0; for(int i=pocz;i<kon;i++) { sum2=sum2+ElementAt(i+1); if(max2<sum2) { max2=sum2; } if(sum+ElementAt(i+1)>0) { sum=sum+ElementAt(i+1); } else { sum=0; } } PutLL(0,max2); PutLL(0,sum); PutLL(0,sum2); Send(0); } else { long long int odeb; long long int sumk=0; long long int maxim=0; long long int max22=0; long long int sum22; for(int i=1;i<NumberOfNodes();i++) { Receive(i); max22=GetLL(i); if(maxim<sumk+max22) { maxim=sumk+max22; } odeb=GetLL(i); sum22=GetLL(i); if(sumk+sum22>odeb) { sumk=sumk+sum22; } else { sumk=odeb; } if(sumk>maxim) { maxim=sumk; } } cout<<maxim; } return 0; } |
English