mihaimarcel21

matrice_replace_adi

Dec 11th, 2020 (edited)
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define NMAX 155
  3. using namespace std;
  4. ifstream fin("matrix_replace.in");
  5. ofstream fout("matrix_replace.out");
  6. short a[NMAX - 50][NMAX][NMAX];
  7. bool ap[NMAX];
  8.  
  9. int n, k, Large_dim, UsedK;
  10.  
  11. int main()
  12. {
  13.     fin>>n>>k;
  14.     for(int i=1;i<=n;++i)
  15.         for(int j=1;j<=n;++j)
  16.         {
  17.             int x;
  18.             fin>>x;
  19.             ap[x]=1;
  20.             a[x][i][j]=1;
  21.         }
  22.     for(int nr=0; nr<=100; ++nr)
  23.     {
  24.         if(ap[nr])
  25.         {
  26.             for(int i=1;i<=n;++i)
  27.                 for(int j=1;j<=n;++j)
  28.                     a[nr][i][j]=a[nr][i][j]+a[nr][i-1][j]+a[nr][i][j-1]-a[nr][i-1][j-1];
  29.             for(int i=1;i<=n;++i)
  30.                 for(int j=1;j<=n;++j)
  31.                 {
  32.                     int curr=n-max(i,j)+1;
  33.                     for(int DimSQ=1;DimSQ<=curr;++DimSQ)
  34.                     {
  35.                         int SQ=DimSQ*DimSQ;
  36.                         int Sum=a[nr][i+DimSQ-1][j+DimSQ-1]-a[nr][i-1][j+DimSQ-1]-a[nr][i+DimSQ-1][j-1]+a[nr][i-1][j -1];
  37.                         if(SQ-Sum<=k)
  38.                         {
  39.                             if(DimSQ>Large_dim||(DimSQ==Large_dim&&SQ-Sum< UsedK))
  40.                                 UsedK=SQ-Sum,Large_dim=DimSQ;
  41.                         }
  42.                         else
  43.                             DimSQ=200;
  44.                     }
  45.                 }
  46.         }
  47.     }
  48.     fout<<Large_dim<<' '<<UsedK;
  49.     return 0;
  50. }
Add Comment
Please, Sign In to add comment