#include <cstdlib> #include <iostream> #include "maklib.h" #include "message.h" using namespace std; int main() { long long min=0,max=0,akt=0,odp=0,tmp; int koniec, i, szer=Size()/NumberOfNodes(); if(MyNodeId()<NumberOfNodes()-1) koniec = szer*(MyNodeId()+1); else koniec = Size(); for(i=szer*MyNodeId()+1 ; i<=koniec ; i++){ akt+=ElementAt(i); if(akt<min) min=akt; if(akt>max) max=akt; if(max-min>odp) odp=max-min; } if(MyNodeId()>0){ PutLL(0, odp); PutLL(0, max); PutLL(0, min); PutLL(0, akt); Send(0); }else{ //min=0,max=0,akt=0; for(i=1;i<NumberOfNodes();i++){ Receive(i); tmp=GetLL(i); //odp if(tmp>odp)odp=tmp; tmp=GetLL(i); //max if(max<akt+tmp)max=akt+tmp; if(max-min>odp) odp=max; tmp=GetLL(i); //min if(min>akt+tmp)min=akt+tmp; tmp=GetLL(i); //akt akt=akt+tmp; } } if(MyNodeId()==0) cout<<odp; 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 | #include <cstdlib> #include <iostream> #include "maklib.h" #include "message.h" using namespace std; int main() { long long min=0,max=0,akt=0,odp=0,tmp; int koniec, i, szer=Size()/NumberOfNodes(); if(MyNodeId()<NumberOfNodes()-1) koniec = szer*(MyNodeId()+1); else koniec = Size(); for(i=szer*MyNodeId()+1 ; i<=koniec ; i++){ akt+=ElementAt(i); if(akt<min) min=akt; if(akt>max) max=akt; if(max-min>odp) odp=max-min; } if(MyNodeId()>0){ PutLL(0, odp); PutLL(0, max); PutLL(0, min); PutLL(0, akt); Send(0); }else{ //min=0,max=0,akt=0; for(i=1;i<NumberOfNodes();i++){ Receive(i); tmp=GetLL(i); //odp if(tmp>odp)odp=tmp; tmp=GetLL(i); //max if(max<akt+tmp)max=akt+tmp; if(max-min>odp) odp=max; tmp=GetLL(i); //min if(min>akt+tmp)min=akt+tmp; tmp=GetLL(i); //akt akt=akt+tmp; } } if(MyNodeId()==0) cout<<odp; return 0; } |