#include <iostream> #include "teatr.h" #include "message.h" using namespace std; int main() { // --- WSZYSCY long ileRzedow = GetN(); long i = 0; int mojNumer = MyNodeId(); int ileInstancji = NumberOfNodes(); // ---- wszystkie poza 0 liczą od siebie w dół // zliczanie klotni dla tego widza (o numerze rownym numerowi instancji) if(mojNumer != 0) { if(ileRzedow < 2) // jak jest tylko jeden rzad, to nie ma klotni return 0; long long liczbaKlotniInstancji = 0; long *wzrost = new long[ileRzedow]; for(i = 0; i < ileRzedow; i++) wzrost[i] = GetElement(i); long nrRzedu = 0; for(long j = 0 ; ; j++) { nrRzedu = mojNumer + j * (ileInstancji - 1); if(nrRzedu >= ileRzedow) { // po zliczeniu (lub jeśli nie masz czego liczyć) wyslij do 0 PutLL(0, liczbaKlotniInstancji); Send(0); return 0; } for(i = nrRzedu - 1; i >= 0; i--) { if(wzrost[nrRzedu] < wzrost[i]) // jesli moj wzrost jest mniejszy od ktoregos przede mna, liczbaKlotniInstancji++; // to jestem skory do klotni } } } else { // ---- 0 instancja tylko zlicza od innych if(ileRzedow < 2) {// jak jest tylko jeden rzad, to nie ma klotni cout << 0; return 0; } unsigned long long liczbaKlotniWszystkich = 0; for(i = 1; i < ileInstancji; i++) { Receive(i); liczbaKlotniWszystkich += GetLL(i); } cout << liczbaKlotniWszystkich; } 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 | #include <iostream> #include "teatr.h" #include "message.h" using namespace std; int main() { // --- WSZYSCY long ileRzedow = GetN(); long i = 0; int mojNumer = MyNodeId(); int ileInstancji = NumberOfNodes(); // ---- wszystkie poza 0 liczą od siebie w dół // zliczanie klotni dla tego widza (o numerze rownym numerowi instancji) if(mojNumer != 0) { if(ileRzedow < 2) // jak jest tylko jeden rzad, to nie ma klotni return 0; long long liczbaKlotniInstancji = 0; long *wzrost = new long[ileRzedow]; for(i = 0; i < ileRzedow; i++) wzrost[i] = GetElement(i); long nrRzedu = 0; for(long j = 0 ; ; j++) { nrRzedu = mojNumer + j * (ileInstancji - 1); if(nrRzedu >= ileRzedow) { // po zliczeniu (lub jeśli nie masz czego liczyć) wyslij do 0 PutLL(0, liczbaKlotniInstancji); Send(0); return 0; } for(i = nrRzedu - 1; i >= 0; i--) { if(wzrost[nrRzedu] < wzrost[i]) // jesli moj wzrost jest mniejszy od ktoregos przede mna, liczbaKlotniInstancji++; // to jestem skory do klotni } } } else { // ---- 0 instancja tylko zlicza od innych if(ileRzedow < 2) {// jak jest tylko jeden rzad, to nie ma klotni cout << 0; return 0; } unsigned long long liczbaKlotniWszystkich = 0; for(i = 1; i < ileInstancji; i++) { Receive(i); liczbaKlotniWszystkich += GetLL(i); } cout << liczbaKlotniWszystkich; } return 0; } |