Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.04 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int main(){
  6.  
  7.     long int n, k;
  8.  
  9.     cin >> n >> k;
  10.  
  11.     long int c = k;
  12.  
  13.     long int A[4][20001];
  14.     short int mask[4][20001] = {0};
  15.  
  16.     for (long int i = 1; i <= n; i++){
  17.         cin >> A[i][1] >> A[i][2];
  18.     }
  19.  
  20.     while (c > 0){
  21.  
  22.         long int imax = 1;
  23.         long int jmax = 1;
  24.  
  25.         for (int i = 1; i <= n; i++){
  26.             for (int j = 1; j <= 2;j++){
  27.                 if (A[i][j] > A[imax][jmax]){
  28.                     imax = i;
  29.                     jmax = i;
  30.                 }
  31.             }
  32.         }
  33.         mask[imax][jmax] = k - c + 1;
  34.         A[imax][jmax] = 0;
  35.  
  36.         if (jmax == 1){
  37.             long int a = A[imax - 1][jmax];
  38.             long int b = A[imax][jmax + 1];
  39.             long int c = A[imax + 1][jmax];
  40.  
  41.             if ((a >= b) && (a >= c)){
  42.                 mask[imax - 1][jmax] = mask[imax][jmax];
  43.                 A[imax - 1][jmax] = 0;
  44.             }
  45.  
  46.             if ((b >= c) && (b >= a)){
  47.                 mask[imax][jmax + 1] = mask[imax][jmax];
  48.                 A[imax][jmax + 1] = 0;
  49.             }
  50.  
  51.             if ((c >= b) && (c >= a)){
  52.                 mask[imax + 1][jmax] = mask[imax][jmax];
  53.                 A[imax + 1][jmax] = 0;
  54.             }
  55.         }
  56.  
  57.         if (jmax == 2){
  58.             long int a = A[imax - 1][jmax];
  59.             long int b = A[imax][jmax - 1];
  60.             long int c = A[imax + 1][jmax];
  61.  
  62.             if ((a >= b) && (a >= c)){
  63.                 mask[imax - 1][jmax] = mask[imax][jmax];
  64.                 A[imax - 1][jmax] = 0;
  65.             }
  66.  
  67.             if ((b >= c) && (b >= a)){
  68.                 mask[imax][jmax - 1] = mask[imax][jmax];
  69.                 A[imax][jmax - 1] = 0;
  70.             }
  71.  
  72.             if ((c >= b) && (c >= a)){
  73.                 mask[imax + 1][jmax] = mask[imax][jmax];
  74.                 A[imax + 1][jmax] = 0;
  75.             }
  76.         }
  77.  
  78.         c--;
  79.     }
  80.  
  81.     for (long int i = 1; i <= n; i++){
  82.         cout << mask[i][1] << " " << mask[i][2] << endl;
  83.     }
  84.  
  85.  
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement