Advertisement
Georgiy1108

100 баллов

Sep 1st, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. struct M//структура для хранения места.
  6. {
  7.     int v, i, j;
  8. };
  9.  
  10. main()
  11. {
  12.     int n, m, k, t;
  13.     cin >> n >> m >> k >> t;
  14.    
  15.     vector<vector<int>> p(n + 1, vector<int>(m + 1));//индексация с 1, чтобы было проще.
  16.     for(int i = 1; i <= n; i++)
  17.         for(int j = 1; j <= m; j++)
  18.             cin >> p[i][j];
  19.            
  20.     while(t--)
  21.     {
  22.         int x, y;
  23.         cin >> x >> y;
  24.         p[x][y] = -1;
  25.     }
  26.    
  27.     vector<M> ms;
  28.     for(int i = 1; i <= n; i++)
  29.         for(int j = 1; j <= m; j++)
  30.             ms.push_back({p[i][j], i, j});
  31.            
  32.     sort(ms.begin(), ms.end(), [](const M left, const M right)
  33.     {
  34.         if(left.v != right.v)
  35.             return left.v > right.v;
  36.         else if(left.i != right.i)
  37.             return left.i < right.i;
  38.         else
  39.             return left.j < right.j;
  40.     });
  41.    
  42.     vector<M> ans;
  43.     long long sum = 0;
  44.     for(int i = 0; i <= k; i++)
  45.         sum += ms[i].v, ans.push_back(ms[i]);
  46.    
  47.     sort(ans.begin(), ans.end(), [](const M left, const M right)
  48.     {
  49.         if(left.i != right.i)
  50.             return left.i < right.i;
  51.         else
  52.             return left.j < right.j;
  53.     });
  54.        
  55.     cout << sum << '\n';   
  56.     for(auto k : ans)
  57.         cout << k.i << ' ' << k.j << '\n';
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement