제출 #572246

#제출 시각아이디문제언어결과실행 시간메모리
572246SSRS최솟값 배열 (IZhO11_hyper)C++14
100 / 100
790 ms22320 KiB
#include <bits/stdc++.h> using namespace std; vector<int> slide_min(vector<int> &A, int M){ int N = A.size(); deque<int> dq; vector<int> ans(N - M + 1); for (int i = 0; i < N; i++){ while (!dq.empty()){ if (A[dq.back()] >= A[i]){ dq.pop_back(); } else { break; } } dq.push_back(i); if (i >= M - 1){ ans[i - M + 1] = A[dq.front()]; if (dq.front() == i - M + 1){ dq.pop_front(); } } } return ans; } int main(){ int N, M; cin >> N >> M; vector<vector<vector<vector<int>>>> X(N, vector<vector<vector<int>>>(N, vector<vector<int>>(N, vector<int>(N)))); 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 >> X[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++){ vector<int> A = X[i][j][k]; vector<int> B = slide_min(A, M); for (int l = 0; l <= N - M; l++){ X[i][j][k][l] = B[l]; } } } } for (int i = 0; i < N; i++){ for (int j = 0; j < N; j++){ for (int k = 0; k <= N - M; k++){ vector<int> A(N); for (int l = 0; l < N; l++){ A[l] = X[i][j][l][k]; } vector<int> B = slide_min(A, M); for (int l = 0; l <= N - M; l++){ X[i][j][l][k] = B[l]; } } } } for (int i = 0; i < N; i++){ for (int j = 0; j <= N - M; j++){ for (int k = 0; k <= N - M; k++){ vector<int> A(N); for (int l = 0; l < N; l++){ A[l] = X[i][l][j][k]; } vector<int> B = slide_min(A, M); for (int l = 0; l <= N - M; l++){ X[i][l][j][k] = B[l]; } } } } for (int i = 0; i <= N - M; i++){ for (int j = 0; j <= N - M; j++){ for (int k = 0; k <= N - M; k++){ vector<int> A(N); for (int l = 0; l < N; l++){ A[l] = X[l][i][j][k]; } vector<int> B = slide_min(A, M); for (int l = 0; l <= N - M; l++){ X[l][i][j][k] = B[l]; } } } } for (int i = 0; i <= N - M; i++){ for (int j = 0; j <= N - M; j++){ for (int k = 0; k <= N - M; k++){ for (int l = 0; l <= N - M; l++){ cout << X[i][j][k][l]; if (i < N - M || j < N - M || k < N - M || l < N - M){ cout << ' '; } } } } } cout << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...