#include <bits/stdc++.h> #include "message.h" #include "kanapka.h" using namespace std; using ll = long long; const int ONE = 100 * 1000; int main() { int K = NumberOfNodes(); int ID = MyNodeId(); ll n = GetN(); if (n < ONE) { K = 1; } if (ID >= K) { return 0; } ll beg = (ID * n) / K; ll en = ((ID + 1) * n) / K; ll sum = 0; ll res_l = 0, res = 0, res_r = 0; ll pref = 0; for (ll i = beg; i < en; i++) { ll a = GetTaste(i); pref += a; sum += a; res_l = min(res_l, pref); res_r = min(res_r + a, 0LL); res = min(res, res_r); } if (ID == 0) { for (int k = 1; k < K; k++) { Receive(k); ll sum1 = GetLL(k); ll res_l1 = GetLL(k); ll res1 = GetLL(k); ll res_r1 = GetLL(k); res = min(res, min(res1, res_r + res_l1)); res_l = min(res_l, sum + res_l1); res_r = min(res_r + sum1, res_r1); sum += sum1; } cout << sum - res << "\n"; } else { PutLL(0, sum); PutLL(0, res_l); PutLL(0, res); PutLL(0, res_r); Send(0); } 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 66 | #include <bits/stdc++.h> #include "message.h" #include "kanapka.h" using namespace std; using ll = long long; const int ONE = 100 * 1000; int main() { int K = NumberOfNodes(); int ID = MyNodeId(); ll n = GetN(); if (n < ONE) { K = 1; } if (ID >= K) { return 0; } ll beg = (ID * n) / K; ll en = ((ID + 1) * n) / K; ll sum = 0; ll res_l = 0, res = 0, res_r = 0; ll pref = 0; for (ll i = beg; i < en; i++) { ll a = GetTaste(i); pref += a; sum += a; res_l = min(res_l, pref); res_r = min(res_r + a, 0LL); res = min(res, res_r); } if (ID == 0) { for (int k = 1; k < K; k++) { Receive(k); ll sum1 = GetLL(k); ll res_l1 = GetLL(k); ll res1 = GetLL(k); ll res_r1 = GetLL(k); res = min(res, min(res1, res_r + res_l1)); res_l = min(res_l, sum + res_l1); res_r = min(res_r + sum1, res_r1); sum += sum1; } cout << sum - res << "\n"; } else { PutLL(0, sum); PutLL(0, res_l); PutLL(0, res); PutLL(0, res_r); Send(0); } return 0; } |