#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; } |
English