Advertisement
Serega

Theft of Blueprints

Jul 24th, 2013
767
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstdio>
  4. #include <cmath>
  5. using namespace std;
  6.  
  7. const int MAXN = 2000;
  8. __int64 c[MAXN][MAXN];
  9.  
  10. int main()
  11. {
  12.     int n, k, temp;
  13.     scanf("%d %d", &n, &k);
  14.     for (int i = 0; i < n - 1; ++i)
  15.     {
  16.         c[i][i] = -1;
  17.         for (int j = i + 1; j < n; ++j)
  18.         {
  19.             scanf("%d", &temp);
  20.             c[j][i] = c[i][j] = temp;
  21.         }
  22.     }
  23.     c[n - 1][n - 1] = -1;
  24.     __int64 sum = 0, cnt = 0;
  25.     if (k == 1 || (k > 2 && n == k + 1))
  26.     {
  27.         cnt = n;
  28.         for (int i = 0; i < n; ++i)
  29.             for (int j = 0; j < n; ++j)
  30.                 if (c[i][j] != -1)
  31.                     sum += c[i][j];
  32.     }
  33.     if (k == 2)
  34.     {
  35.         cnt = n * (n - 1) / 2;
  36.         vector<int> vect;
  37.         for (int i = 0; i < n; ++i)
  38.         {
  39.             vect.clear();
  40.             for (int j = 0; j < n; ++j)
  41.                 if (c[i][j] != -1)
  42.                     vect.push_back(j);
  43.             for (int j = 0; j < vect.size(); ++j)
  44.                 for (int z = j + 1; z < vect.size(); ++z)
  45.                     sum += c[i][vect[j]] + c[i][vect[z]];
  46.         }
  47.     }
  48.     cout << sum / cnt << endl;
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement