Submission #547881

# Submission time Handle Problem Language Result Execution time Memory
547881 2022-04-12T01:03:44 Z racsosabe Hyper-minimum (IZhO11_hyper) C++14
0 / 100
1578 ms 135632 KB
#include<bits/stdc++.h>
using namespace::std;

const int N = 40;
const int LOG = 8;

int n;
int m;
int a[N][N][N][N];
int ST[N][N][N][N][LOG];

void init(){
	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++){
					ST[i][j][k][l][0] = a[i][j][k][l];
				}
			}
		}
	}
	for(int d = 1, dis = 1; 2 * dis <= m; d++, dis <<= 1){
		assert(d < 8);
		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++){
						vector<int> pos = {i, j, k, l};
						ST[i][j][k][l][d] = INT_MAX;
						for(int mask = 0; mask < 16; mask++){
							for(int at = 0, p = 1; at < 4; at++, p <<= 1){
								if(mask & p) pos[at] += dis;
							}
							ST[i][j][k][l][d] = min(ST[i][j][k][l][d], ST[pos[0]][pos[1]][pos[2]][pos[3]][d - 1]);
							for(int at = 0, p = 1; at < 4; at++, p <<= 1){
								if(mask & p) pos[at] -= dis;
							}
						}
					}
				}
			}
		}
	}
}

int query(int i, int j, int k, int l, int dis, int pot){
	int ans = INT_MAX;
	vector<int> pos = {i, j, k, l};
	for(int mask = 0; mask < 16; mask++){
		for(int at = 0, p = 1; at < 4; at++, p <<= 1){
			if(mask & p) pos[at] += m - dis;
		}
		ans = min(ans, ST[pos[0]][pos[1]][pos[2]][pos[3]][pot]);
		for(int at = 0, p = 1; at < 4; at++, p <<= 1){
			if(mask & p) pos[at] -= m - dis;
		}
	}
	return ans;
}

int main(){
	scanf("%d %d", &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++){
					scanf("%d", &a[i][j][k][l]);
				}
			}
		}
	}
	init();
	int pot = 0;
	int dis = 1;
	while((dis << 1) <= m){
		dis <<= 1;
		pot++;
	}
	vector<int> v;
	for(int i = 0; i + m - 1 < n; i++){
		for(int j = 0; j + m - 1 < n; j++){
			for(int k = 0; k + m - 1 < n; k++){
				for(int l = 0; l + m - 1 < n; l++){
					v.emplace_back(query(i, j, k, l, dis, pot));
				}
			}
		}
	}
	for(int i = 0; i < v.size(); i++) printf("%d%c", v[i], " \n"[i + 1 == v.size()]);
	return 0;
}

Compilation message

hyper.cpp: In function 'int main()':
hyper.cpp:89:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   89 |  for(int i = 0; i < v.size(); i++) printf("%d%c", v[i], " \n"[i + 1 == v.size()]);
      |                 ~~^~~~~~~~~~
hyper.cpp:89:69: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   89 |  for(int i = 0; i < v.size(); i++) printf("%d%c", v[i], " \n"[i + 1 == v.size()]);
      |                                                               ~~~~~~^~~~~~~~~~~
hyper.cpp:62:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   62 |  scanf("%d %d", &n, &m);
      |  ~~~~~^~~~~~~~~~~~~~~~~
hyper.cpp:67:11: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   67 |      scanf("%d", &a[i][j][k][l]);
      |      ~~~~~^~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 692 KB Output is correct
3 Correct 9 ms 2516 KB Output is correct
4 Correct 7 ms 2524 KB Output is correct
5 Correct 8 ms 2624 KB Output is correct
6 Correct 35 ms 7224 KB Output is correct
7 Correct 49 ms 6976 KB Output is correct
8 Correct 131 ms 14384 KB Output is correct
9 Correct 73 ms 16812 KB Output is correct
10 Correct 115 ms 14384 KB Output is correct
11 Correct 301 ms 28376 KB Output is correct
12 Correct 653 ms 46152 KB Output is correct
13 Correct 732 ms 44368 KB Output is correct
14 Correct 591 ms 52464 KB Output is correct
15 Correct 705 ms 73804 KB Output is correct
16 Correct 1044 ms 58032 KB Output is correct
17 Correct 868 ms 59992 KB Output is correct
18 Correct 865 ms 85424 KB Output is correct
19 Correct 1093 ms 70704 KB Output is correct
20 Runtime error 1578 ms 135632 KB Execution killed with signal 11
21 Halted 0 ms 0 KB -