#include <bits/stdc++.h>
using namespace std;
const int M = 36;
int suf[M][M][M][M][3], a[M][M][M][M];
int main()
{
int n,m;
cin>>n>>m;
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
for (int k=0;k<n;k++)
for (int l=0;l<n;l++)
cin>>a[i][j][k][l];
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
for (int k=0;k<n;k++)
{
multiset<int> se;
for (int l=n-1;l>=0;l--)
{
se.insert(a[i][j][k][l]);
if (se.size()==m)
suf[i][j][k][l][2]=*se.begin(), se.erase(se.find(a[i][j][k][l+m-1]));
}
}
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
{
for (int l=0;l+m<=n;l++)
{
multiset<int> se;
for (int k=n-1;k>=0;k--)
{
se.insert(suf[i][j][k][l][2]);
if (se.size()==m)
suf[i][j][k][l][1]=*se.begin(), se.erase(se.find(suf[i][j][k+m-1][l][2]));
}
}
}
for (int i=0;i<n;i++)
for (int k=0;k+m<=n;k++)
for (int l=0;l+m<=n;l++)
{
multiset<int> se;
for (int j=n-1;j>=0;j--)
{
se.insert(suf[i][j][k][l][1]);
if (se.size()==m)
suf[i][j][k][l][0]=*se.begin(), se.erase(se.find(suf[i][j+m-1][k][l][1]));
}
}
for (int j=0;j+m<=n;j++)
for (int k=0;k+m<=n;k++)
for (int l=0;l+m<=n;l++)
{
multiset<int> se;
for (int i=n-1;i>=0;i--)
{
se.insert(suf[i][j][k][l][0]);
if (se.size()==m)
a[i][j][k][l]=*se.begin(), se.erase(se.find(suf[i+m-1][j][k][l][0]));
}
}
m=n-m+1;
for (int i=0;i<m;i++)
for (int j=0;j<m;j++)
for (int k=0;k<m;k++)
for (int l=0;l<m;l++)
cout<<a[i][j][k][l]<<' ';
cout<<endl;
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |