제출 #4854

#제출 시각아이디문제언어결과실행 시간메모리
4854cki86201최솟값 배열 (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...