Advertisement
knyazer

Untitled

Apr 8th, 2020
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. // binaryFounde-1.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //
  3.  
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8. int K, N;
  9.  
  10. int* a;
  11. int* splitters;
  12.  
  13. int getError()
  14. {
  15.     int maxTomSize = -1;
  16.     int* toms = new int[K];
  17.     for (int i = 0; i < K; i++)
  18.     {
  19.         toms[i] = 0;
  20.         for (int j = splitters[i]; j < splitters[i + 1]; j++)
  21.         {
  22.             toms[i] += a[j];
  23.         }
  24.        
  25.         if (toms[i] > maxTomSize)
  26.         {
  27.             maxTomSize = toms[i];
  28.         }
  29.     }
  30.    
  31.     return maxTomSize;
  32. }
  33.  
  34. #define max(a,b) (a > b ? a : b)
  35.  
  36. bool update()
  37. {
  38.     bool changed = true;
  39.     for (int i = 1; i < K; i++)
  40.     {
  41.         int error0 = getError();
  42.         splitters[i] += 1;
  43.         int error1 = getError() - error0;
  44.         splitters[i] -= 2;
  45.         int error2 = getError() - error0;
  46.         splitters[i] += 1;
  47.  
  48.         if (error1 >= 0 && error2 >= 0) continue;
  49.         changed = false;
  50.  
  51.         if (error1 > error2) splitters[i] -= 1;
  52.         else splitters[i] += 1;
  53.     }
  54.  
  55.     return changed;
  56.  
  57. }
  58.  
  59. int main()
  60. {  
  61.     cin >> N;
  62.     a = new int[N];
  63.     for (int i = 0; i < N; i++) cin >> a[i];
  64.     cin >> K;
  65.     splitters = new int[K + 1];
  66.     splitters[0] = 0;
  67.  
  68.     for (int i = 1; i < K; i++) splitters[i] = int(float(N / (K - 1)) * (float(i) - 0.5));
  69.  
  70.     splitters[K] = N;
  71.  
  72.     while (!update()) {};
  73.  
  74.     cout << getError() << endl;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement