Submission #4854

#TimeUsernameProblemLanguageResultExecution timeMemory
4854cki86201Hyper-minimum (IZhO11_hyper)C++98
100 / 100
480 ms24536 KiB
#include<stdio.h>

int inp[4][35][35][35][35];

struct deq{
	int p[35],f,r;
	void push(int x){
		while(f!=r&&p[f-1]>x)f--;
		p[f++]=x;
	}
	void init(){f=r=0;}
	inline void pop(int x){if(p[r]==x)r++;}
	inline int read(){return p[r];}
}Dq;

int main(){
	int i,j,k,l,n,m;
	scanf("%d%d",&n,&m);
	for(i=0;i<n;i++)for(j=0;j<n;j++)for(k=0;k<n;k++)for(l=0;l<n;l++)scanf("%d",inp[0][l][i][j]+k);
	for(i=0;i<n;i++)for(j=0;j<n;j++)for(k=0;k<n;k++){
		Dq.init();
		for(l=0;l<m;l++)Dq.push(inp[0][i][j][k][l]);
		inp[1][i][j][k][m-1] = Dq.read();
		for(l=m;l<n;l++){
			Dq.pop(inp[0][i][j][k][l-m]);
			Dq.push(inp[0][i][j][k][l]);
			inp[1][i][j][k][l] = Dq.read();
		}
	}
	for(i=0;i<n;i++)for(j=0;j<n;j++)for(l=m-1;l<n;l++){
		Dq.init();
		for(k=0;k<m;k++)Dq.push(inp[1][i][j][k][l]);
		inp[2][i][j][m-1][l] = Dq.read();
		for(k=m;k<n;k++){
			Dq.pop(inp[1][i][j][k-m][l]);
			Dq.push(inp[1][i][j][k][l]);
			inp[2][i][j][k][l] = Dq.read();
		}
	}
	for(i=0;i<n;i++)for(k=m-1;k<n;k++)for(l=m-1;l<n;l++){
		Dq.init();
		for(j=0;j<m;j++)Dq.push(inp[2][i][j][k][l]);
		inp[3][i][m-1][k][l] = Dq.read();
		for(j=m;j<n;j++){
			Dq.pop(inp[2][i][j-m][k][l]);
			Dq.push(inp[2][i][j][k][l]);
			inp[3][i][j][k][l] = Dq.read();
		}
	}
	for(j=m-1;j<n;j++)for(k=m-1;k<n;k++)for(l=m-1;l<n;l++){
		Dq.init();
		for(i=0;i<m;i++)Dq.push(inp[3][i][j][k][l]);
		printf("%d ",Dq.read());
		for(i=m;i<n;i++){
			Dq.pop(inp[3][i-m][j][k][l]);
			Dq.push(inp[3][i][j][k][l]);
			printf("%d ",Dq.read());
		}
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...