#include <message.h>
#include "kanapka.h"
#include <bits/stdc++.h>
using namespace std;
int main() {
int N=NumberOfNodes();
int M=MyNodeId();
int n=GetN();
int need=min(N,n);
if (M>=need) return 0;
int e=(n+N-1)/N;
int L=e*M;
int R=min(n,L+e);
long long s=0,x=0,y=0,z=0;
for (int i=L; i<R; i++) {
s+=GetTaste(i);
x=max(x,s);
y=min(y,s);
z=min(z,s-x);
}
if (M>0) {
PutLL(0, y);
PutLL(0, z);
PutLL(0, x);
PutLL(0, s);
Send(0);
}
if (M==0) {
for (int i=1; i<need; i++) {
Receive(i);
long long k=GetLL(i);
z=min(z,s+k-x);
k=GetLL(i);
z=min(z,k);
k=GetLL(i);
x=max(x,s+k);
s+=GetLL(i);
}
cout<<s-z<<'\n';
}
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 | #include <message.h> #include "kanapka.h" #include <bits/stdc++.h> using namespace std; int main() { int N=NumberOfNodes(); int M=MyNodeId(); int n=GetN(); int need=min(N,n); if (M>=need) return 0; int e=(n+N-1)/N; int L=e*M; int R=min(n,L+e); long long s=0,x=0,y=0,z=0; for (int i=L; i<R; i++) { s+=GetTaste(i); x=max(x,s); y=min(y,s); z=min(z,s-x); } if (M>0) { PutLL(0, y); PutLL(0, z); PutLL(0, x); PutLL(0, s); Send(0); } if (M==0) { for (int i=1; i<need; i++) { Receive(i); long long k=GetLL(i); z=min(z,s+k-x); k=GetLL(i); z=min(z,k); k=GetLL(i); x=max(x,s+k); s+=GetLL(i); } cout<<s-z<<'\n'; } return 0; } |
English