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