#include "message.h"
#include "kanapka.h"
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{ int id = MyNodeId();
int n = GetN();
if(n < 1e6)
{ if(id > 0)
return 0;
ll maxim = 0;
ll sum = 0;
ll x;
ll res = 0;
for(int i = 0; i < n; i++)
x = GetTaste(i), sum += x, res = min(res, sum - maxim), maxim = max(maxim, sum);
cout << sum - res;
}
int B = (n - 1) / 10 + 1;
int L = id * B;
int P = min(n, L + B);
ll sum = 0;
ll maxim = 0, res = 0, x;
for(int i = L; i < P; i++)
x = GetTaste(i), sum += x, maxim = max(maxim, sum), res = min(res, sum - maxim);
if(id > 0)
{ Receive(id - 1);
ll kek = GetLL(id - 1);
sum += kek; maxim += kek;
res += kek;
}
if(id < 9)
{ PutLL(id + 1, res);
Send(id + 1);
PutLL(9, res);
Send(9);
}
if(id == 9)
{ for(int i = 0; i < 9; i++)
{ Receive(i);
res = min(res, GetLL(i));
}
cout << sum - res;
}
}
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 | #include "message.h" #include "kanapka.h" #include <bits/stdc++.h> #define ll long long using namespace std; int main() { int id = MyNodeId(); int n = GetN(); if(n < 1e6) { if(id > 0) return 0; ll maxim = 0; ll sum = 0; ll x; ll res = 0; for(int i = 0; i < n; i++) x = GetTaste(i), sum += x, res = min(res, sum - maxim), maxim = max(maxim, sum); cout << sum - res; } int B = (n - 1) / 10 + 1; int L = id * B; int P = min(n, L + B); ll sum = 0; ll maxim = 0, res = 0, x; for(int i = L; i < P; i++) x = GetTaste(i), sum += x, maxim = max(maxim, sum), res = min(res, sum - maxim); if(id > 0) { Receive(id - 1); ll kek = GetLL(id - 1); sum += kek; maxim += kek; res += kek; } if(id < 9) { PutLL(id + 1, res); Send(id + 1); PutLL(9, res); Send(9); } if(id == 9) { for(int i = 0; i < 9; i++) { Receive(i); res = min(res, GetLL(i)); } cout << sum - res; } } |
English