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