#include<iostream> #include<vector> #include "kanapka.h" #include "message.h" using namespace std; int main() { ios_base::sync_with_stdio(0); long long int N; N=GetN(); //cout<<"podaj N\n"; //cin>>N; vector<int>tab; long long int Nodes; Nodes=NumberOfNodes(); //cout<<"podaj NumberOfNodes\n"; //cin>>Nodes; long long int ID; ID=MyNodeId(); //cout<<"podaj ID\n"; //cin>>ID; //for(int i2=0;i2<9;i2++) //{ //cout<<"\t"<<i2<<"\n"; //ID=i2; if((ID!=0)&&(ID!=Nodes-1)) { for(long long int i=((long long int)(N/(Nodes-1)))*(ID-1);i<((long long int)(N/(Nodes-1)))*(ID);i++) { // cout<<i<<"\n"; tab.push_back(GetTaste(i)); } } //} if(ID==Nodes-1) { //cout<<"\t9\n"; for(long long int i=((long long int)(N/(Nodes-1)))*(Nodes-2);i<N;i++) { //cout<<i<<"\n"; tab.push_back(GetTaste(i)); } } long long int suma,min,kon,kon2,min2; min=0; min2=0; kon=0; kon2=0; suma=0; if(ID!=0) { for(int i=tab.size()-1;i>=0;i--) { suma+=tab[i]; kon2+=tab[i]; if(kon2<kon) { kon=kon2; } if(min2+tab[i]<0) { min2+=tab[i]; } else { min2=0; } if(min2<min) { min=min2; } } PutLL(0,suma); Send(0); PutLL(0,kon); Send(0); PutLL(0,min); Send(0); } long long int suma3,min3,kon3,akt; akt=0; if(ID==0) { for(int i=1;i<Nodes;i++) { Receive(i); suma3=GetLL(i); Receive(i); kon3=GetLL(i); Receive(i); min3=GetLL(i); suma+=suma3; if(akt+suma3<0) { akt+=suma3; } else { akt=0; } if(kon3<akt) { akt=kon3; } if(akt<min) { min=akt; } if(min3<min) { min=min3; } } cout<<suma-min; } 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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | #include<iostream> #include<vector> #include "kanapka.h" #include "message.h" using namespace std; int main() { ios_base::sync_with_stdio(0); long long int N; N=GetN(); //cout<<"podaj N\n"; //cin>>N; vector<int>tab; long long int Nodes; Nodes=NumberOfNodes(); //cout<<"podaj NumberOfNodes\n"; //cin>>Nodes; long long int ID; ID=MyNodeId(); //cout<<"podaj ID\n"; //cin>>ID; //for(int i2=0;i2<9;i2++) //{ //cout<<"\t"<<i2<<"\n"; //ID=i2; if((ID!=0)&&(ID!=Nodes-1)) { for(long long int i=((long long int)(N/(Nodes-1)))*(ID-1);i<((long long int)(N/(Nodes-1)))*(ID);i++) { // cout<<i<<"\n"; tab.push_back(GetTaste(i)); } } //} if(ID==Nodes-1) { //cout<<"\t9\n"; for(long long int i=((long long int)(N/(Nodes-1)))*(Nodes-2);i<N;i++) { //cout<<i<<"\n"; tab.push_back(GetTaste(i)); } } long long int suma,min,kon,kon2,min2; min=0; min2=0; kon=0; kon2=0; suma=0; if(ID!=0) { for(int i=tab.size()-1;i>=0;i--) { suma+=tab[i]; kon2+=tab[i]; if(kon2<kon) { kon=kon2; } if(min2+tab[i]<0) { min2+=tab[i]; } else { min2=0; } if(min2<min) { min=min2; } } PutLL(0,suma); Send(0); PutLL(0,kon); Send(0); PutLL(0,min); Send(0); } long long int suma3,min3,kon3,akt; akt=0; if(ID==0) { for(int i=1;i<Nodes;i++) { Receive(i); suma3=GetLL(i); Receive(i); kon3=GetLL(i); Receive(i); min3=GetLL(i); suma+=suma3; if(akt+suma3<0) { akt+=suma3; } else { akt=0; } if(kon3<akt) { akt=kon3; } if(akt<min) { min=akt; } if(min3<min) { min=min3; } } cout<<suma-min; } return 0; } |