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