#include <iostream> #include <algorithm> #include "message.h" #include "kanapka.h" using namespace std; int main() { long long suma=0, minL=0, maksL=0, minSr=0, sumaSr=0; int pocz=GetN()*MyNodeId()/NumberOfNodes(), kon=GetN()*(MyNodeId()+1)/NumberOfNodes(); for (int i=pocz; i<kon; ++i) { int x=GetTaste(i); suma+=x; minL=min(minL, suma); maksL=max(maksL, suma); sumaSr=min(sumaSr+x, 0LL); minSr=min(minSr, sumaSr); } long long minP=suma-maksL; if (MyNodeId()) { PutLL(0, suma); PutLL(0, minL); PutLL(0, minSr); PutLL(0, minP); Send(0); return 0; } for (int i=1, lw=NumberOfNodes(); i<lw; ++i) { Receive(i); long long s=GetLL(i), l=GetLL(i), sr=GetLL(i), p=GetLL(i); suma+=s; minSr=min(minSr, sr); minSr=min(minSr, minP+l); minP=min(minP+s, p); } cout<<(suma-minSr)<<endl; 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 | #include <iostream> #include <algorithm> #include "message.h" #include "kanapka.h" using namespace std; int main() { long long suma=0, minL=0, maksL=0, minSr=0, sumaSr=0; int pocz=GetN()*MyNodeId()/NumberOfNodes(), kon=GetN()*(MyNodeId()+1)/NumberOfNodes(); for (int i=pocz; i<kon; ++i) { int x=GetTaste(i); suma+=x; minL=min(minL, suma); maksL=max(maksL, suma); sumaSr=min(sumaSr+x, 0LL); minSr=min(minSr, sumaSr); } long long minP=suma-maksL; if (MyNodeId()) { PutLL(0, suma); PutLL(0, minL); PutLL(0, minSr); PutLL(0, minP); Send(0); return 0; } for (int i=1, lw=NumberOfNodes(); i<lw; ++i) { Receive(i); long long s=GetLL(i), l=GetLL(i), sr=GetLL(i), p=GetLL(i); suma+=s; minSr=min(minSr, sr); minSr=min(minSr, minP+l); minP=min(minP+s, p); } cout<<(suma-minSr)<<endl; return 0; } |