Submission #809199

# Submission time Handle Problem Language Result Execution time Memory
809199 2023-08-05T21:18:00 Z Username4132 Rectangles (IOI19_rect) C++14
27 / 100
570 ms 1048576 KB
#include "rect.h"
#include<iostream>
#include<vector>
#include<bitset>
using namespace std;
using ll = long long;
#define forn(i, n) for(int i=0; i<(int)n; ++i)
#define forsn(i, s, n) for(int i=s; i<(int)n; ++i)
#define dforn(i, n) for(int i=n-1; i>=0; --i)
#define dforsn(i, s, n) for(int i=n-1; i>=s; --i)
#define PB push_back


const int MAXN = 710;
bitset<MAXN> mask[MAXN][MAXN]; // column, start row
bitset<MAXN> one("1"), full;
int n, m, arr[MAXN][MAXN], brr[MAXN][MAXN];
int far[MAXN][MAXN][MAXN]; // row, l, r

void calc1(){
	dforn(row, n){
		forsn(i, 1, m-1){
			int mx = -1;
			forsn(j, i, m-1){
				mx = max(mx, arr[row][j]);
				if(mx<arr[row][i-1] && mx<arr[row][j+1]){
					far[row][i][j]=far[row+1][i][j];
				}
				else far[row][i][j]=row;
			}
		}
	}
}

void calc2(){
	forn(col, m){
		forsn(i, 1, n-1){
			int mx = -1;
			forsn(j, i, n-1){
				mx = max(mx, brr[col][j]);
				if(mx<brr[col][i-1] && mx<brr[col][j+1]){
					mask[i][col]|=(one<<j);
				}
			}
		}
	}
}

long long count_rectangles(std::vector<std::vector<int> > a) {
	n=(int)a.size(), m=(int)a.front().size();
	forn(i, 800) full|=(one<<i);
	forn(i, n) forn(j, m) brr[j][i]=arr[i][j]=a[i][j];
	forn(i, m) forn(j, m) far[n][i][j]=n;

	calc1();
	calc2();

	ll ans=0;
	forsn(row, 1, n-1){
		forsn(i, 1, m-1){
			bitset<MAXN> bt=full;
			forsn(j, i, m-1){
				bt&=mask[row][j];
				ans+=(bt&(~(full<<far[row][i][j]))).count();
			}
		}
	}
	
	return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 2 ms 3156 KB Output is correct
3 Correct 2 ms 3264 KB Output is correct
4 Correct 2 ms 3156 KB Output is correct
5 Correct 2 ms 3028 KB Output is correct
6 Correct 2 ms 3156 KB Output is correct
7 Correct 1 ms 1620 KB Output is correct
8 Correct 2 ms 1492 KB Output is correct
9 Correct 2 ms 3156 KB Output is correct
10 Correct 2 ms 3156 KB Output is correct
11 Correct 2 ms 3156 KB Output is correct
12 Correct 2 ms 3156 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 568 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 312 KB Output is correct
19 Correct 2 ms 3156 KB Output is correct
20 Correct 1 ms 1620 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 2 ms 3156 KB Output is correct
3 Correct 2 ms 3264 KB Output is correct
4 Correct 2 ms 3156 KB Output is correct
5 Correct 2 ms 3028 KB Output is correct
6 Correct 2 ms 3156 KB Output is correct
7 Correct 1 ms 1620 KB Output is correct
8 Correct 2 ms 1492 KB Output is correct
9 Correct 2 ms 3156 KB Output is correct
10 Correct 2 ms 3156 KB Output is correct
11 Correct 2 ms 3156 KB Output is correct
12 Correct 2 ms 3156 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 568 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 312 KB Output is correct
19 Correct 2 ms 3156 KB Output is correct
20 Correct 1 ms 1620 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 23 ms 19636 KB Output is correct
23 Correct 24 ms 19668 KB Output is correct
24 Correct 23 ms 19668 KB Output is correct
25 Correct 23 ms 19540 KB Output is correct
26 Correct 23 ms 19364 KB Output is correct
27 Correct 23 ms 19404 KB Output is correct
28 Correct 33 ms 19540 KB Output is correct
29 Correct 8 ms 10196 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 2 ms 3156 KB Output is correct
3 Correct 2 ms 3264 KB Output is correct
4 Correct 2 ms 3156 KB Output is correct
5 Correct 2 ms 3028 KB Output is correct
6 Correct 2 ms 3156 KB Output is correct
7 Correct 1 ms 1620 KB Output is correct
8 Correct 2 ms 1492 KB Output is correct
9 Correct 2 ms 3156 KB Output is correct
10 Correct 2 ms 3156 KB Output is correct
11 Correct 2 ms 3156 KB Output is correct
12 Correct 2 ms 3156 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 568 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 23 ms 19636 KB Output is correct
18 Correct 24 ms 19668 KB Output is correct
19 Correct 23 ms 19668 KB Output is correct
20 Correct 23 ms 19540 KB Output is correct
21 Correct 23 ms 19364 KB Output is correct
22 Correct 23 ms 19404 KB Output is correct
23 Correct 33 ms 19540 KB Output is correct
24 Correct 8 ms 10196 KB Output is correct
25 Correct 1 ms 340 KB Output is correct
26 Correct 1 ms 312 KB Output is correct
27 Correct 2 ms 3156 KB Output is correct
28 Correct 1 ms 1620 KB Output is correct
29 Correct 1 ms 340 KB Output is correct
30 Correct 315 ms 118036 KB Output is correct
31 Correct 298 ms 117928 KB Output is correct
32 Correct 297 ms 118060 KB Output is correct
33 Correct 301 ms 117956 KB Output is correct
34 Correct 303 ms 117836 KB Output is correct
35 Correct 307 ms 117964 KB Output is correct
36 Correct 300 ms 117852 KB Output is correct
37 Correct 327 ms 116300 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 2 ms 3156 KB Output is correct
3 Correct 2 ms 3264 KB Output is correct
4 Correct 2 ms 3156 KB Output is correct
5 Correct 2 ms 3028 KB Output is correct
6 Correct 2 ms 3156 KB Output is correct
7 Correct 1 ms 1620 KB Output is correct
8 Correct 2 ms 1492 KB Output is correct
9 Correct 2 ms 3156 KB Output is correct
10 Correct 2 ms 3156 KB Output is correct
11 Correct 2 ms 3156 KB Output is correct
12 Correct 2 ms 3156 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 568 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 23 ms 19636 KB Output is correct
18 Correct 24 ms 19668 KB Output is correct
19 Correct 23 ms 19668 KB Output is correct
20 Correct 23 ms 19540 KB Output is correct
21 Correct 23 ms 19364 KB Output is correct
22 Correct 23 ms 19404 KB Output is correct
23 Correct 33 ms 19540 KB Output is correct
24 Correct 8 ms 10196 KB Output is correct
25 Correct 315 ms 118036 KB Output is correct
26 Correct 298 ms 117928 KB Output is correct
27 Correct 297 ms 118060 KB Output is correct
28 Correct 301 ms 117956 KB Output is correct
29 Correct 303 ms 117836 KB Output is correct
30 Correct 307 ms 117964 KB Output is correct
31 Correct 300 ms 117852 KB Output is correct
32 Correct 327 ms 116300 KB Output is correct
33 Correct 1 ms 340 KB Output is correct
34 Correct 1 ms 312 KB Output is correct
35 Correct 2 ms 3156 KB Output is correct
36 Correct 1 ms 1620 KB Output is correct
37 Correct 1 ms 340 KB Output is correct
38 Runtime error 570 ms 1048576 KB Execution killed with signal 9
39 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 202 ms 20244 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 312 KB Output is correct
3 Correct 2 ms 3156 KB Output is correct
4 Correct 1 ms 1620 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 596 KB Output is correct
7 Runtime error 60 ms 34844 KB Execution killed with signal 11
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 468 KB Output is correct
2 Correct 2 ms 3156 KB Output is correct
3 Correct 2 ms 3264 KB Output is correct
4 Correct 2 ms 3156 KB Output is correct
5 Correct 2 ms 3028 KB Output is correct
6 Correct 2 ms 3156 KB Output is correct
7 Correct 1 ms 1620 KB Output is correct
8 Correct 2 ms 1492 KB Output is correct
9 Correct 2 ms 3156 KB Output is correct
10 Correct 2 ms 3156 KB Output is correct
11 Correct 2 ms 3156 KB Output is correct
12 Correct 2 ms 3156 KB Output is correct
13 Correct 1 ms 340 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 568 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 23 ms 19636 KB Output is correct
18 Correct 24 ms 19668 KB Output is correct
19 Correct 23 ms 19668 KB Output is correct
20 Correct 23 ms 19540 KB Output is correct
21 Correct 23 ms 19364 KB Output is correct
22 Correct 23 ms 19404 KB Output is correct
23 Correct 33 ms 19540 KB Output is correct
24 Correct 8 ms 10196 KB Output is correct
25 Correct 315 ms 118036 KB Output is correct
26 Correct 298 ms 117928 KB Output is correct
27 Correct 297 ms 118060 KB Output is correct
28 Correct 301 ms 117956 KB Output is correct
29 Correct 303 ms 117836 KB Output is correct
30 Correct 307 ms 117964 KB Output is correct
31 Correct 300 ms 117852 KB Output is correct
32 Correct 327 ms 116300 KB Output is correct
33 Runtime error 570 ms 1048576 KB Execution killed with signal 9
34 Halted 0 ms 0 KB -