#include "message.h" #include "poszukiwania.h" #include <cstdlib> #include <cstdio> #include <iostream> using namespace std; int M; int N; int max_int(int a, int b) { if (a > b) return a; return b; } int min_int(int a, int b) { if (a < b) return a; return b; } bool jest_frag(int p) { for (int i = 0 ; i < M; i++) { if (SignalAt(i + 1) != SeqAt(i + p + 1)) return false; } return true; } int main(int argc, char *argv[]) { M = SignalLength(); N = SeqLength(); int num_of_nodes = min_int(NumberOfNodes(), N - M + 1); int my_node = MyNodeId(); if (M - N > 0) { if (my_node ==0) cout<< "0" << endl; return 0; } int dl = N - M + 1; if (my_node < num_of_nodes) { long long moja_suma = 0; int pocz = dl * my_node / num_of_nodes ; int koniec = dl * (my_node +1) / num_of_nodes; if (my_node == num_of_nodes - 1) koniec = dl; for (int i = pocz; i < koniec ; i++) { // cout << i << jest_frag(i)<< endl; if (jest_frag(i)) moja_suma++; } PutLL(0,moja_suma); Send(0); } if (my_node == 0) { long long suma_wsz = 0; for(int i = 0; i < num_of_nodes; i++) { Receive(i); suma_wsz += GetLL(i); } cout << suma_wsz << endl; } }
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 66 67 68 69 70 71 | #include "message.h" #include "poszukiwania.h" #include <cstdlib> #include <cstdio> #include <iostream> using namespace std; int M; int N; int max_int(int a, int b) { if (a > b) return a; return b; } int min_int(int a, int b) { if (a < b) return a; return b; } bool jest_frag(int p) { for (int i = 0 ; i < M; i++) { if (SignalAt(i + 1) != SeqAt(i + p + 1)) return false; } return true; } int main(int argc, char *argv[]) { M = SignalLength(); N = SeqLength(); int num_of_nodes = min_int(NumberOfNodes(), N - M + 1); int my_node = MyNodeId(); if (M - N > 0) { if (my_node ==0) cout<< "0" << endl; return 0; } int dl = N - M + 1; if (my_node < num_of_nodes) { long long moja_suma = 0; int pocz = dl * my_node / num_of_nodes ; int koniec = dl * (my_node +1) / num_of_nodes; if (my_node == num_of_nodes - 1) koniec = dl; for (int i = pocz; i < koniec ; i++) { // cout << i << jest_frag(i)<< endl; if (jest_frag(i)) moja_suma++; } PutLL(0,moja_suma); Send(0); } if (my_node == 0) { long long suma_wsz = 0; for(int i = 0; i < num_of_nodes; i++) { Receive(i); suma_wsz += GetLL(i); } cout << suma_wsz << endl; } } |