답안 #819741

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
819741 2023-08-10T13:04:36 Z Lobo Vision Program (IOI19_vision) C++17
21 / 100
60 ms 6068 KB
#include "vision.h"
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define fr first
#define sc second
#define mp make_pair
#define all(x) x.begin(),x.end()

void construct_network(int n, int m, int K) {
	// std::vector<int> Ns;
	// Ns = {0, 1};
	// int a = add_and(Ns);
	// Ns = {0, a};
	// int b = add_or(Ns);
	// Ns = {0, 1, b};
	// int c = add_xor(Ns);
	// add_not(c);

	// vector<pair<int,int>> wtf = {{1,1},{1,-1},{-1,1},{-1,-1}};

	// vector<int> checks;
	// for(int i = 0; i < n; i++) {
	// 	if(max(n,m) > 30 && min(n,m) != 1 && i != 0) continue;
	// 	for(int j = 0; j < m; j++) {
	// 		if(max(n,m) > 30 && min(n,m) != 1 && j != 0) continue;
	// 		vector<int> valid_pos;
	// 		for(int d1 = 0; d1 <= k; d1++) {
	// 			for(auto X : wtf) {
	// 				int ii = i+d1*X.fr;
	// 				if(d1 == 0 && X.fr == -1) continue;
	// 				int jj = j+(k-d1)*X.sc;
	// 				if((k-d1) == 0 && X.sc == -1) continue;

	// 				if(ii >= 0 && ii < n && jj >= 0 && jj < m && i*m+j < ii*m+jj) {
	// 					valid_pos.pb(ii*m+jj);
	// 				}
	// 			}
	// 		}
	// 		if(valid_pos.size() == 0) continue;
	// 		int or_valid_pos = add_or(valid_pos);
	// 		checks.pb(add_and(vector<int>{i*m+j,or_valid_pos}));
	// 	}
	// }
	// add_or(checks);

	vector<int> checks0;

	for(int add = 0; K+add <= n+m-2; add+= 1) {
		int k = K+add;
		vector<int> checks;
		for(int it = 0; it <= n+m-2; it++) {
			int i,j;
			if(it <= n-1) {
				i = n-1-it;
				j = 0;
			}
			else {
				i = 0;
				j = it-n+1;
			}

			vector<int> diag0,diag1;
			int i0,j0,i1,j1;

			i0 = i-i;
			j0 = j-i;
			i1 = i-i;
			j1 = j+k-i;

			while(i0 <= n-1) {
				// if(i0 >= 0 && i0 <= n-1 && j0 >= 0 && j0 <= m-1) diag0.pb(i0*m+j0);
				for(int jj = 0; jj <= j0; jj++) {
					if(i0 >= 0 && i0 <= n-1 && jj >= 0 && jj <= m-1) diag0.pb(i0*m+jj);
				}
				i0++;
				j0++;
			}

			while(i1 <= n-1) {
				// if(i1 >= 0 && i1 <= n-1 && j1 >= 0 && j1 <= m-1) diag1.pb(i1*m+j1);
				for(int jj = j1; jj <= m-1; jj++) {
					if(i1 >= 0 && i1 <= n-1 && jj >= 0 && jj <= m-1) diag1.pb(i1*m+jj);
				}
				i1++;
				j1++;
			}

			if(diag0.size() && diag1.size()) checks.pb(add_and(vector<int>{add_or(diag0),add_or(diag1)}));
			for(auto x : diag0) {
				// cout << " ++ " << x/m << " " << x%m << endl;
			}
			for(auto x : diag1) {
				// cout << " -- " << x/m << " " << x%m << endl;
			}
			diag0.clear();
			diag1.clear();

			if(it <= n-1) {
				i = it;
				j = 0;
			}
			else {
				i = n-1;
				j = it-n+1;
			}

			i0 = i-i;
			j0 = j+i;
			i1 = i-i;
			j1 = j+k+i;

			// cout << i << " " << j << endl;

			while(i0 <= n-1) {
				// if(i0 >= 0 && i0 <= n-1 && j0 >= 0 && j0 <= m-1) diag0.pb(i0*m+j0);
				for(int jj = 0; jj <= j0; jj++) {
					if(i0 >= 0 && i0 <= n-1 && jj >= 0 && jj <= m-1) diag0.pb(i0*m+jj);
				}
				i0++;
				j0--;
			}

			while(i1 <= n-1) {
				// if(i1 >= 0 && i1 <= n-1 && j1 >= 0 && j1 <= m-1) diag1.pb(i1*m+j1);
				for(int jj = j1; jj <= m-1; jj++) {
					if(i1 >= 0 && i1 <= n-1 && jj >= 0 && jj <= m-1) diag1.pb(i1*m+jj);
				}
				i1++;
				j1--;
			}

			if(diag0.size() && diag1.size()) checks.pb(add_and(vector<int>{add_or(diag0),add_or(diag1)}));
		}

		if(add == 0) checks0.pb(add_or(checks));
		else checks0.pb(add_not(add_or(checks)));
	}

	add_and(checks0);
}

Compilation message

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:90:13: warning: unused variable 'x' [-Wunused-variable]
   90 |    for(auto x : diag0) {
      |             ^
vision.cpp:93:13: warning: unused variable 'x' [-Wunused-variable]
   93 |    for(auto x : diag1) {
      |             ^
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 296 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 296 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 296 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 0 ms 296 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 212 KB Output is correct
16 Correct 0 ms 296 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 296 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 296 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 296 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 0 ms 296 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 212 KB Output is correct
16 Correct 0 ms 296 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 1 ms 212 KB Output is correct
20 Correct 0 ms 212 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 1 ms 300 KB Output is correct
23 Correct 3 ms 468 KB Output is correct
24 Correct 2 ms 340 KB Output is correct
25 Correct 1 ms 340 KB Output is correct
26 Correct 1 ms 212 KB Output is correct
27 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 296 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 296 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 296 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 0 ms 296 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 212 KB Output is correct
16 Correct 0 ms 296 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 1 ms 212 KB Output is correct
20 Correct 0 ms 212 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 1 ms 300 KB Output is correct
23 Correct 3 ms 468 KB Output is correct
24 Correct 2 ms 340 KB Output is correct
25 Correct 1 ms 340 KB Output is correct
26 Correct 1 ms 212 KB Output is correct
27 Correct 0 ms 212 KB Output is correct
28 Correct 60 ms 6068 KB Output is correct
29 Correct 1 ms 340 KB Output is correct
30 Correct 1 ms 340 KB Output is correct
31 Correct 1 ms 212 KB Output is correct
32 Correct 41 ms 4248 KB Output is correct
33 Incorrect 5 ms 4308 KB WA in grader: Too many inputs
34 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 296 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 296 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 296 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 0 ms 296 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 212 KB Output is correct
16 Correct 0 ms 296 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 1 ms 212 KB Output is correct
20 Correct 0 ms 212 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 1 ms 300 KB Output is correct
23 Correct 3 ms 468 KB Output is correct
24 Correct 2 ms 340 KB Output is correct
25 Correct 1 ms 340 KB Output is correct
26 Correct 1 ms 212 KB Output is correct
27 Correct 0 ms 212 KB Output is correct
28 Correct 60 ms 6068 KB Output is correct
29 Correct 1 ms 340 KB Output is correct
30 Correct 1 ms 340 KB Output is correct
31 Correct 1 ms 212 KB Output is correct
32 Correct 41 ms 4248 KB Output is correct
33 Incorrect 5 ms 4308 KB WA in grader: Too many inputs
34 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 3404 KB WA in grader: Too many instructions
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Incorrect 4 ms 4308 KB WA in grader: Too many inputs
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 4624 KB WA in grader: Too many inputs
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 296 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 296 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 296 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 212 KB Output is correct
11 Correct 0 ms 296 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 212 KB Output is correct
16 Correct 0 ms 296 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
19 Correct 1 ms 212 KB Output is correct
20 Correct 0 ms 212 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 1 ms 300 KB Output is correct
23 Correct 3 ms 468 KB Output is correct
24 Correct 2 ms 340 KB Output is correct
25 Correct 1 ms 340 KB Output is correct
26 Correct 1 ms 212 KB Output is correct
27 Correct 0 ms 212 KB Output is correct
28 Correct 60 ms 6068 KB Output is correct
29 Correct 1 ms 340 KB Output is correct
30 Correct 1 ms 340 KB Output is correct
31 Correct 1 ms 212 KB Output is correct
32 Correct 41 ms 4248 KB Output is correct
33 Incorrect 5 ms 4308 KB WA in grader: Too many inputs
34 Halted 0 ms 0 KB -