Submission #143753

# Submission time Handle Problem Language Result Execution time Memory
143753 2019-08-15T02:59:56 Z ondrah Rectangles (IOI19_rect) C++14
27 / 100
5000 ms 635928 KB
#include "rect.h"
#include <string.h>
#include <algorithm>
using namespace std;
#define REP(A, B) for(int (A)=0;(A)<(B); (A)++)
using ll = long long;
int rowMax[12][2555][2555]; //row,c1,c1+2^k
int colMax[12][2555][2555]; //

int getRowMax(int r, int c1, int c2) {
	int d = 0;
	while((1<<(d+1)) <= (c2-c1+1))
		d++;
	return max(rowMax[d][r][c1], rowMax[d][r][max(c1, c2-(1<<d)+1)]);
}
int getColMax(int c, int r1, int r2) {
	int d = 0;
	while((1<<(d+1)) <= (r2-r1+1))
		d++;
	// [d][r1][c] je od r1 do r1+2^d-1 vcetne
	return max(colMax[d][r1][c], colMax[d][max(r1, r2-(1<<d)+1)][c]);
}

long long count_rectangles(std::vector<std::vector<int> > a) {
	memset(rowMax,-1,sizeof(rowMax));
	memset(colMax, -1, sizeof(colMax));
	int n = a.size();
	int m = a[0].size();
	REP(i, n) {
		REP(j, m) rowMax[0][i][j] = colMax[0][i][j] = a[i][j];
	}
	for(int k = 1; k < 12; k++) {
		REP(i, n) REP(j, m) {
			int other = min(m-2, j+(1<<(k-1)));
			rowMax[k][i][j] = max(rowMax[k-1][i][j], rowMax[k-1][i][other]);
		}
	}
	for(int k = 1; k < 12; k++) {
		REP(i, n) REP(j, m) {
			int other = min(n-2, i+(1<<(k-1)));
			colMax[k][i][j] = max(colMax[k-1][i][j], colMax[k-1][other][j]);
		}
	}

	ll ans = 0;
	for(int r1 = 1; r1 <= n-2; r1++) {
		for(int c1 = 1; c1 <= m-2; c1++) {
			for(int r2 = r1; r2 <= n-2; r2++) {
				int maxC2 = m-2;
				for(int c2 = c1; c2 <= maxC2; c2++) {
					bool good = true;
					bool breakc2 = false;
					for(int rr = r1; rr <= r2; rr++) {
						int rm = getRowMax(rr, c1, c2);
						if(rm >= a[rr][c1-1]) {
							//printf("r1=%d, r2=%d, c1=%d, c2=%d, ERR AT rr=%d\n", r1, r2, c1, c2, rr);
							good = false;
							breakc2 = true;
							break;
						}
						if(rm >= a[rr][c2+1]) {
							good = false;
							break;
						}
					}
					if(breakc2) break;
					bool colGood = true;
					for(int cc = c1; cc <= c2; cc++) {
						int rm = getColMax(cc, r1, r2);
						if(rm >= min(a[r1-1][cc], a[r2+1][cc])) {
						  
							good = false;
							maxC2 = cc-1;
							breakc2 = true;
							break;
						}
					}
					if(breakc2) break;
					if(good) {
						ans++;
						//printf("r1=%d, r2=%d, c1=%d, c2=%d\n", r1, r2, c1, c2);
					}
				}
			}
		}
	}

	return ans;
}

Compilation message

rect.cpp: In function 'long long int count_rectangles(std::vector<std::vector<int> >)':
rect.cpp:67:11: warning: unused variable 'colGood' [-Wunused-variable]
      bool colGood = true;
           ^~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 518 ms 613616 KB Output is correct
2 Correct 506 ms 613628 KB Output is correct
3 Correct 516 ms 613660 KB Output is correct
4 Correct 507 ms 613536 KB Output is correct
5 Correct 502 ms 613624 KB Output is correct
6 Correct 503 ms 613572 KB Output is correct
7 Correct 504 ms 613496 KB Output is correct
8 Correct 507 ms 613624 KB Output is correct
9 Correct 526 ms 613488 KB Output is correct
10 Correct 520 ms 613608 KB Output is correct
11 Correct 505 ms 613628 KB Output is correct
12 Correct 505 ms 613496 KB Output is correct
13 Correct 508 ms 613452 KB Output is correct
14 Correct 507 ms 613496 KB Output is correct
15 Correct 504 ms 613644 KB Output is correct
16 Correct 505 ms 613588 KB Output is correct
17 Correct 502 ms 613668 KB Output is correct
18 Correct 514 ms 613576 KB Output is correct
19 Correct 510 ms 613572 KB Output is correct
20 Correct 516 ms 613552 KB Output is correct
21 Correct 548 ms 613496 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 518 ms 613616 KB Output is correct
2 Correct 506 ms 613628 KB Output is correct
3 Correct 516 ms 613660 KB Output is correct
4 Correct 507 ms 613536 KB Output is correct
5 Correct 502 ms 613624 KB Output is correct
6 Correct 503 ms 613572 KB Output is correct
7 Correct 504 ms 613496 KB Output is correct
8 Correct 507 ms 613624 KB Output is correct
9 Correct 526 ms 613488 KB Output is correct
10 Correct 520 ms 613608 KB Output is correct
11 Correct 505 ms 613628 KB Output is correct
12 Correct 505 ms 613496 KB Output is correct
13 Correct 508 ms 613452 KB Output is correct
14 Correct 507 ms 613496 KB Output is correct
15 Correct 504 ms 613644 KB Output is correct
16 Correct 505 ms 613588 KB Output is correct
17 Correct 575 ms 613648 KB Output is correct
18 Correct 576 ms 613624 KB Output is correct
19 Correct 598 ms 613776 KB Output is correct
20 Correct 545 ms 613724 KB Output is correct
21 Correct 518 ms 613624 KB Output is correct
22 Correct 510 ms 613624 KB Output is correct
23 Correct 505 ms 613696 KB Output is correct
24 Correct 507 ms 613580 KB Output is correct
25 Correct 502 ms 613668 KB Output is correct
26 Correct 514 ms 613576 KB Output is correct
27 Correct 510 ms 613572 KB Output is correct
28 Correct 516 ms 613552 KB Output is correct
29 Correct 548 ms 613496 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 518 ms 613616 KB Output is correct
2 Correct 506 ms 613628 KB Output is correct
3 Correct 516 ms 613660 KB Output is correct
4 Correct 507 ms 613536 KB Output is correct
5 Correct 502 ms 613624 KB Output is correct
6 Correct 503 ms 613572 KB Output is correct
7 Correct 504 ms 613496 KB Output is correct
8 Correct 507 ms 613624 KB Output is correct
9 Correct 526 ms 613488 KB Output is correct
10 Correct 520 ms 613608 KB Output is correct
11 Correct 505 ms 613628 KB Output is correct
12 Correct 505 ms 613496 KB Output is correct
13 Correct 508 ms 613452 KB Output is correct
14 Correct 507 ms 613496 KB Output is correct
15 Correct 504 ms 613644 KB Output is correct
16 Correct 505 ms 613588 KB Output is correct
17 Correct 575 ms 613648 KB Output is correct
18 Correct 576 ms 613624 KB Output is correct
19 Correct 598 ms 613776 KB Output is correct
20 Correct 545 ms 613724 KB Output is correct
21 Correct 518 ms 613624 KB Output is correct
22 Correct 510 ms 613624 KB Output is correct
23 Correct 505 ms 613696 KB Output is correct
24 Correct 507 ms 613580 KB Output is correct
25 Correct 3496 ms 613912 KB Output is correct
26 Correct 3476 ms 613880 KB Output is correct
27 Correct 3473 ms 613880 KB Output is correct
28 Correct 563 ms 613892 KB Output is correct
29 Correct 584 ms 613920 KB Output is correct
30 Correct 561 ms 613880 KB Output is correct
31 Correct 578 ms 614008 KB Output is correct
32 Correct 570 ms 613964 KB Output is correct
33 Correct 502 ms 613668 KB Output is correct
34 Correct 514 ms 613576 KB Output is correct
35 Correct 510 ms 613572 KB Output is correct
36 Correct 516 ms 613552 KB Output is correct
37 Correct 548 ms 613496 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 518 ms 613616 KB Output is correct
2 Correct 506 ms 613628 KB Output is correct
3 Correct 516 ms 613660 KB Output is correct
4 Correct 507 ms 613536 KB Output is correct
5 Correct 502 ms 613624 KB Output is correct
6 Correct 503 ms 613572 KB Output is correct
7 Correct 504 ms 613496 KB Output is correct
8 Correct 507 ms 613624 KB Output is correct
9 Correct 526 ms 613488 KB Output is correct
10 Correct 520 ms 613608 KB Output is correct
11 Correct 505 ms 613628 KB Output is correct
12 Correct 505 ms 613496 KB Output is correct
13 Correct 508 ms 613452 KB Output is correct
14 Correct 507 ms 613496 KB Output is correct
15 Correct 504 ms 613644 KB Output is correct
16 Correct 505 ms 613588 KB Output is correct
17 Correct 575 ms 613648 KB Output is correct
18 Correct 576 ms 613624 KB Output is correct
19 Correct 598 ms 613776 KB Output is correct
20 Correct 545 ms 613724 KB Output is correct
21 Correct 518 ms 613624 KB Output is correct
22 Correct 510 ms 613624 KB Output is correct
23 Correct 505 ms 613696 KB Output is correct
24 Correct 507 ms 613580 KB Output is correct
25 Correct 3496 ms 613912 KB Output is correct
26 Correct 3476 ms 613880 KB Output is correct
27 Correct 3473 ms 613880 KB Output is correct
28 Correct 563 ms 613892 KB Output is correct
29 Correct 584 ms 613920 KB Output is correct
30 Correct 561 ms 613880 KB Output is correct
31 Correct 578 ms 614008 KB Output is correct
32 Correct 570 ms 613964 KB Output is correct
33 Correct 2745 ms 617592 KB Output is correct
34 Correct 4379 ms 617560 KB Output is correct
35 Correct 4587 ms 617592 KB Output is correct
36 Correct 2753 ms 617440 KB Output is correct
37 Execution timed out 5125 ms 617320 KB Time limit exceeded
38 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 5120 ms 613496 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 506 ms 613616 KB Output is correct
2 Execution timed out 5104 ms 635928 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 518 ms 613616 KB Output is correct
2 Correct 506 ms 613628 KB Output is correct
3 Correct 516 ms 613660 KB Output is correct
4 Correct 507 ms 613536 KB Output is correct
5 Correct 502 ms 613624 KB Output is correct
6 Correct 503 ms 613572 KB Output is correct
7 Correct 504 ms 613496 KB Output is correct
8 Correct 507 ms 613624 KB Output is correct
9 Correct 526 ms 613488 KB Output is correct
10 Correct 520 ms 613608 KB Output is correct
11 Correct 505 ms 613628 KB Output is correct
12 Correct 505 ms 613496 KB Output is correct
13 Correct 508 ms 613452 KB Output is correct
14 Correct 507 ms 613496 KB Output is correct
15 Correct 504 ms 613644 KB Output is correct
16 Correct 505 ms 613588 KB Output is correct
17 Correct 575 ms 613648 KB Output is correct
18 Correct 576 ms 613624 KB Output is correct
19 Correct 598 ms 613776 KB Output is correct
20 Correct 545 ms 613724 KB Output is correct
21 Correct 518 ms 613624 KB Output is correct
22 Correct 510 ms 613624 KB Output is correct
23 Correct 505 ms 613696 KB Output is correct
24 Correct 507 ms 613580 KB Output is correct
25 Correct 3496 ms 613912 KB Output is correct
26 Correct 3476 ms 613880 KB Output is correct
27 Correct 3473 ms 613880 KB Output is correct
28 Correct 563 ms 613892 KB Output is correct
29 Correct 584 ms 613920 KB Output is correct
30 Correct 561 ms 613880 KB Output is correct
31 Correct 578 ms 614008 KB Output is correct
32 Correct 570 ms 613964 KB Output is correct
33 Correct 2745 ms 617592 KB Output is correct
34 Correct 4379 ms 617560 KB Output is correct
35 Correct 4587 ms 617592 KB Output is correct
36 Correct 2753 ms 617440 KB Output is correct
37 Execution timed out 5125 ms 617320 KB Time limit exceeded
38 Halted 0 ms 0 KB -