#include "maklib.h" #include <stdio.h> int main() { int wyn, w; int i, ile = Size()/NumberOfNodes(), instancji; if( Size()%NumberOfNodes() ) //zaokrąglij ilość elementów w górę ile++; instancji = Size() / ile; if(Size() % ile ) instancji++; if(MyNodeId() == 0) { wyn = 0; w = 0; } else { Receive( MyNodeId() - 1); wyn = GetInt(MyNodeId() - 1); w = GetInt(MyNodeId() - 1); } if(MyNodeId()<instancji) { for (i = MyNodeId() * ile + 1; i < ((MyNodeId()+1) * ile + 1); i++) { if (w > 0) w += ElementAt(i); /* oplaca sie wziac poprzednie w */ else w = ElementAt(i); /* nie oplaca sie brac poprzedniego w */ if (w > wyn) wyn = w; } } // printf("%d %d\n",w,wyn); if (MyNodeId() == NumberOfNodes() -1) { printf("%d\n", wyn); } else { PutInt(MyNodeId()+1, wyn); PutInt(MyNodeId()+1, w); Send(MyNodeId()+1); } 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 | #include "maklib.h" #include <stdio.h> int main() { int wyn, w; int i, ile = Size()/NumberOfNodes(), instancji; if( Size()%NumberOfNodes() ) //zaokrąglij ilość elementów w górę ile++; instancji = Size() / ile; if(Size() % ile ) instancji++; if(MyNodeId() == 0) { wyn = 0; w = 0; } else { Receive( MyNodeId() - 1); wyn = GetInt(MyNodeId() - 1); w = GetInt(MyNodeId() - 1); } if(MyNodeId()<instancji) { for (i = MyNodeId() * ile + 1; i < ((MyNodeId()+1) * ile + 1); i++) { if (w > 0) w += ElementAt(i); /* oplaca sie wziac poprzednie w */ else w = ElementAt(i); /* nie oplaca sie brac poprzedniego w */ if (w > wyn) wyn = w; } } // printf("%d %d\n",w,wyn); if (MyNodeId() == NumberOfNodes() -1) { printf("%d\n", wyn); } else { PutInt(MyNodeId()+1, wyn); PutInt(MyNodeId()+1, w); Send(MyNodeId()+1); } return 0; } |