#include "kanapka.h" #include "message.h" #include <algorithm> #include <iostream> using namespace std; int main() { int nodes = NumberOfNodes(); int id = MyNodeId(); long long n = GetN(); long long sz = (n + nodes - 1) / nodes; long long p = 0, m = 0, s = 0; long long start = id * sz; long long finish = min(n, (id + 1) * sz); for (long long i = start; i < finish; i++) { long long value = GetTaste(i); s += value; if (s > p) p = s; } s = 0; for (long long i = finish - 1; i >= start; i--) { long long value = GetTaste(i); s += value; if (s > m) m = s; } PutLL(0, p); Send(0); PutLL(0, s); Send(0); PutLL(0, m); Send(0); long long ans = 0; long long curr = 0; if (id == 0) { for (int i = 0; i < nodes; i++) { Receive(i); long long pref = GetLL(i); Receive(i); long long sum = GetLL(i); Receive(i); long long suff = GetLL(i); if (curr + pref > ans) ans = curr + pref; curr = max(curr + sum, suff); } } cout << ans << endl; 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 | #include "kanapka.h" #include "message.h" #include <algorithm> #include <iostream> using namespace std; int main() { int nodes = NumberOfNodes(); int id = MyNodeId(); long long n = GetN(); long long sz = (n + nodes - 1) / nodes; long long p = 0, m = 0, s = 0; long long start = id * sz; long long finish = min(n, (id + 1) * sz); for (long long i = start; i < finish; i++) { long long value = GetTaste(i); s += value; if (s > p) p = s; } s = 0; for (long long i = finish - 1; i >= start; i--) { long long value = GetTaste(i); s += value; if (s > m) m = s; } PutLL(0, p); Send(0); PutLL(0, s); Send(0); PutLL(0, m); Send(0); long long ans = 0; long long curr = 0; if (id == 0) { for (int i = 0; i < nodes; i++) { Receive(i); long long pref = GetLL(i); Receive(i); long long sum = GetLL(i); Receive(i); long long suff = GetLL(i); if (curr + pref > ans) ans = curr + pref; curr = max(curr + sum, suff); } } cout << ans << endl; return 0; } |