Advertisement
a53

matrix_replace

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