Submission #819787

# Submission time Handle Problem Language Result Execution time Memory
819787 2023-08-10T13:31:24 Z Lobo Vision Program (IOI19_vision) C++17
44 / 100
18 ms 4648 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) {
	map<int,int> diagdw,diagup;
	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;
		}

		int i0,j0;
		vector<int> diag;

		i0 = i-i;
		j0 = j-i;

		while(i0 <= n-1) {
			if(i0 >= 0 && i0 <= n-1 && j0 >= 0 && j0 <= m-1) diag.pb(i0*m+j0);
			i0++;
			j0++;
		}

		diagdw[i-j] = add_or(diag);

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

		diag.clear();

		i0 = i-i;
		j0 = j+i;

		while(i0 <= n-1) {
			if(i0 >= 0 && i0 <= n-1 && j0 >= 0 && j0 <= m-1) diag.pb(i0*m+j0);
			
			i0++;
			j0--;
		}

		diagup[i] = add_or(diag);
	}

	vector<int> checks0;
	for(int add = 0; K+add <= n+m-2 && add <= 1; 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;

			if(diagdw.count(i0-j0) && diagdw.count(i1-j1)) checks.pb(add_and(vector<int>{diagdw[i0-j0],diagdw[i1-j1]}));

			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:105:13: warning: unused variable 'x' [-Wunused-variable]
  105 |    for(auto x : diag0) {
      |             ^
vision.cpp:108:13: warning: unused variable 'x' [-Wunused-variable]
  108 |    for(auto x : diag1) {
      |             ^
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 256 KB Output is correct
16 Correct 0 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 256 KB Output is correct
16 Correct 0 ms 212 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 212 KB Output is correct
22 Correct 0 ms 212 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1 ms 340 KB Output is correct
25 Correct 1 ms 212 KB Output is correct
26 Correct 0 ms 212 KB Output is correct
27 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 256 KB Output is correct
16 Correct 0 ms 212 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 212 KB Output is correct
22 Correct 0 ms 212 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1 ms 340 KB Output is correct
25 Correct 1 ms 212 KB Output is correct
26 Correct 0 ms 212 KB Output is correct
27 Correct 0 ms 212 KB Output is correct
28 Correct 9 ms 1196 KB Output is correct
29 Correct 0 ms 212 KB Output is correct
30 Correct 1 ms 212 KB Output is correct
31 Correct 1 ms 212 KB Output is correct
32 Correct 6 ms 852 KB Output is correct
33 Correct 16 ms 1980 KB Output is correct
34 Correct 11 ms 1204 KB Output is correct
35 Correct 4 ms 596 KB Output is correct
36 Correct 1 ms 340 KB Output is correct
37 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 256 KB Output is correct
16 Correct 0 ms 212 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 212 KB Output is correct
22 Correct 0 ms 212 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1 ms 340 KB Output is correct
25 Correct 1 ms 212 KB Output is correct
26 Correct 0 ms 212 KB Output is correct
27 Correct 0 ms 212 KB Output is correct
28 Correct 9 ms 1196 KB Output is correct
29 Correct 0 ms 212 KB Output is correct
30 Correct 1 ms 212 KB Output is correct
31 Correct 1 ms 212 KB Output is correct
32 Correct 6 ms 852 KB Output is correct
33 Correct 16 ms 1980 KB Output is correct
34 Correct 11 ms 1204 KB Output is correct
35 Correct 4 ms 596 KB Output is correct
36 Correct 1 ms 340 KB Output is correct
37 Correct 1 ms 212 KB Output is correct
38 Incorrect 4 ms 4564 KB WA in grader: Too many inputs
39 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 13 ms 1676 KB Output is correct
2 Correct 4 ms 724 KB Output is correct
3 Correct 4 ms 596 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 18 ms 1636 KB Output is correct
6 Correct 10 ms 948 KB Output is correct
7 Correct 6 ms 468 KB Output is correct
8 Correct 3 ms 340 KB Output is correct
9 Correct 13 ms 1600 KB Output is correct
10 Correct 8 ms 1108 KB Output is correct
11 Correct 4 ms 724 KB Output is correct
12 Correct 4 ms 724 KB Output is correct
13 Correct 2 ms 468 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 18 ms 1644 KB Output is correct
16 Correct 12 ms 1108 KB Output is correct
17 Correct 7 ms 724 KB Output is correct
18 Correct 7 ms 616 KB Output is correct
19 Correct 5 ms 444 KB Output is correct
20 Correct 2 ms 212 KB Output is correct
21 Correct 0 ms 212 KB Output is correct
22 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Incorrect 5 ms 4308 KB WA in grader: Too many inputs
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 4 ms 4648 KB WA in grader: Too many inputs
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 0 ms 212 KB Output is correct
10 Correct 0 ms 212 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 0 ms 256 KB Output is correct
16 Correct 0 ms 212 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 212 KB Output is correct
22 Correct 0 ms 212 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1 ms 340 KB Output is correct
25 Correct 1 ms 212 KB Output is correct
26 Correct 0 ms 212 KB Output is correct
27 Correct 0 ms 212 KB Output is correct
28 Correct 9 ms 1196 KB Output is correct
29 Correct 0 ms 212 KB Output is correct
30 Correct 1 ms 212 KB Output is correct
31 Correct 1 ms 212 KB Output is correct
32 Correct 6 ms 852 KB Output is correct
33 Correct 16 ms 1980 KB Output is correct
34 Correct 11 ms 1204 KB Output is correct
35 Correct 4 ms 596 KB Output is correct
36 Correct 1 ms 340 KB Output is correct
37 Correct 1 ms 212 KB Output is correct
38 Incorrect 4 ms 4564 KB WA in grader: Too many inputs
39 Halted 0 ms 0 KB -