#include<iostream>
#include<cstdlib>
#include<cassert>
#include<cstdio>
#include "kanapka.h"
#include "message.h"
using namespace std;
int main()
{
long long ik=GetN(),sp=0,sl=0,mp=0,ml=0,s=0,n=n=MyNodeId(),m=NumberOfNodes(),ss;
long long tab[ik][3];
for(long long x=0;x<ik;x++)tab[x][0]=GetTaste(x);
for(long long x=0;x<ik;x++){
sp+=tab[ik-1-x][0];
sl+=tab[x][0];
tab[x][1]=sl;
tab[ik-x-1][2]=sp;
if(mp<sp)mp=sp;
if(ml<sl)ml=sl;
}
if(sp>0){
for(long long x=n;x<ik;x+=m){
for(long long y=ik-1;y>x;y--)if(tab[x][1]+tab[y][2]>s)s=tab[x][1]+tab[y][2];
}
}
mp=s;
for(long long x=m-1;x>=0;x--){
if(x!=0){
PutLL(x,s);
Send(x);
}
else{
for(long long y=1;y<m;y++){
if(y!=n){
Receive(y);
ss=GetLL(y);
if(ss>s)mp=ss;
}
}
}
}
cout<<mp;
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 | #include<iostream> #include<cstdlib> #include<cassert> #include<cstdio> #include "kanapka.h" #include "message.h" using namespace std; int main() { long long ik=GetN(),sp=0,sl=0,mp=0,ml=0,s=0,n=n=MyNodeId(),m=NumberOfNodes(),ss; long long tab[ik][3]; for(long long x=0;x<ik;x++)tab[x][0]=GetTaste(x); for(long long x=0;x<ik;x++){ sp+=tab[ik-1-x][0]; sl+=tab[x][0]; tab[x][1]=sl; tab[ik-x-1][2]=sp; if(mp<sp)mp=sp; if(ml<sl)ml=sl; } if(sp>0){ for(long long x=n;x<ik;x+=m){ for(long long y=ik-1;y>x;y--)if(tab[x][1]+tab[y][2]>s)s=tab[x][1]+tab[y][2]; } } mp=s; for(long long x=m-1;x>=0;x--){ if(x!=0){ PutLL(x,s); Send(x); } else{ for(long long y=1;y<m;y++){ if(y!=n){ Receive(y); ss=GetLL(y); if(ss>s)mp=ss; } } } } cout<<mp; return 0; } |
English