#include "kanapka.h"
#include "message.h"
#include <algorithm>
#include <iostream>
using namespace std;
typedef long long ll;
int nnd;
ll n;
struct data{
ll su,pre,in,suf;
}t;
data operator+(const data&a,const data&b){
data c;
c.su=a.su+b.su;
c.pre=min(a.pre,a.su+b.pre);
c.suf=min(b.suf,b.su+a.suf);
c.in=min(min(a.in,b.in),a.suf+b.pre);
return c;
}
int main() {
n=GetN();
nnd=NumberOfNodes();
ll bg=1ll*n*MyNodeId()/nnd,ed=1ll*n*(MyNodeId()+1)/nnd;
ll su=0,mipre=0,misuf=0,miin=0,cursu=0;
for (ll i=bg;i<ed;i++){
ll x=GetTaste(i);
su+=x;
cursu+=x;
if(cursu>0)cursu=0;
miin=min(miin,cursu);
mipre=min(mipre,su);
}
su=0;
for (ll i=ed-1;i>=bg;i--){
ll x=GetTaste(i);
su+=x;
misuf=min(misuf,su);
}
PutLL(0,su);
PutLL(0,mipre);
PutLL(0,misuf);
PutLL(0,miin);
Send(0);
if(MyNodeId()==0){
for (int i=0;i<nnd;i++){
data x;
Receive(i);
x.su=GetLL(i);
x.pre=GetLL(i);
x.suf=GetLL(i);
x.in=GetLL(i);
t=t+x;
}
cout<<t.su-t.in<<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 | #include "kanapka.h" #include "message.h" #include <algorithm> #include <iostream> using namespace std; typedef long long ll; int nnd; ll n; struct data{ ll su,pre,in,suf; }t; data operator+(const data&a,const data&b){ data c; c.su=a.su+b.su; c.pre=min(a.pre,a.su+b.pre); c.suf=min(b.suf,b.su+a.suf); c.in=min(min(a.in,b.in),a.suf+b.pre); return c; } int main() { n=GetN(); nnd=NumberOfNodes(); ll bg=1ll*n*MyNodeId()/nnd,ed=1ll*n*(MyNodeId()+1)/nnd; ll su=0,mipre=0,misuf=0,miin=0,cursu=0; for (ll i=bg;i<ed;i++){ ll x=GetTaste(i); su+=x; cursu+=x; if(cursu>0)cursu=0; miin=min(miin,cursu); mipre=min(mipre,su); } su=0; for (ll i=ed-1;i>=bg;i--){ ll x=GetTaste(i); su+=x; misuf=min(misuf,su); } PutLL(0,su); PutLL(0,mipre); PutLL(0,misuf); PutLL(0,miin); Send(0); if(MyNodeId()==0){ for (int i=0;i<nnd;i++){ data x; Receive(i); x.su=GetLL(i); x.pre=GetLL(i); x.suf=GetLL(i); x.in=GetLL(i); t=t+x; } cout<<t.su-t.in<<endl; } return 0; } |
English