Advertisement
bartekltg

[mak]

May 11th, 2014
416
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. #include <iostream>
  2. #include "maklib.h"
  3. #include "message.h"
  4.  
  5. using namespace std;
  6.  
  7. void bla(int a, int b)
  8. {
  9.     int64_t smin=0;
  10.     int64_t smax=0;
  11.     int64_t skok=0;
  12.     int64_t stan = 0;
  13.     bool minlast=false;
  14.  
  15.     for (int i=a;i<=b;i++)
  16.     {
  17.         int64_t val = ElementAt(i);
  18.         stan +=val;
  19.         skok = max(skok,stan-smin);
  20.         if (stan<smin)
  21.         {
  22.             smin=stan;
  23.             minlast = true;
  24.         }
  25.         else if (stan>smax)
  26.         {
  27.             smax = stan;
  28.             minlast = false;
  29.         }
  30.     }
  31.     int64_t A,B,C;
  32.  
  33.     if (minlast)
  34.     {
  35.         A=smax;
  36.         B=smin-smax;
  37.         C=stan-smin;
  38.     }else
  39.     {
  40.         A=smin;
  41.         B=smax-smin;
  42.         C=stan-smax;
  43.     }
  44.  
  45.     PutLL(0,skok);
  46.     PutLL(0,A);
  47.     PutLL(0,B);
  48.     PutLL(0,C);
  49.     Send(0);
  50. }
  51.  
  52. void odbierze()
  53. {
  54.     int64_t smin=0;
  55.     int64_t smax=0;
  56.     int64_t skok=0;
  57.     int64_t stan = 0;
  58.  
  59.     for (int i=0;i<NumberOfNodes(); i++)
  60.     {
  61.         int64_t wskok, A[3];
  62.  
  63.         Receive(i);
  64.         wskok = GetLL(i);
  65.         skok = max(skok, wskok);
  66.  
  67.         A[0]=GetLL(i);
  68.         A[1]=GetLL(i);
  69.         A[2]=GetLL(i);
  70.         for (int  j=0;j<3;j++)
  71.         {
  72.             int64_t val = A[j];
  73.             stan +=val;
  74.             skok = max(skok,stan-smin);
  75.             if (stan<smin)
  76.             {
  77.                 smin=stan;
  78.             }
  79.             else if (stan>smax)
  80.             {
  81.                 smax = stan;
  82.             }
  83.         }
  84.  
  85.     }
  86.     cout<<skok<<endl;
  87. }
  88.  
  89.  
  90. int main()
  91. {
  92.  
  93.  
  94.     int64_t NoN = NumberOfNodes();
  95.     int64_t IDdd = MyNodeId();
  96.  
  97.     int a=(IDdd* Size() +NoN)/NoN ;
  98.     int b=((IDdd+1) *Size() +NoN)/NoN-1;
  99.  
  100.     bla( a ,b);
  101.  
  102.     if (IDdd == 0)
  103.         odbierze();
  104.  
  105.     return 0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement