Submission #794760

# Submission time Handle Problem Language Result Execution time Memory
794760 2023-07-26T21:56:03 Z APROHACK Rectangles (IOI19_rect) C++17
50 / 100
5000 ms 110732 KB
#include "rect.h"
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define ff first
#define ss second
using namespace std;
vector<vector<int>>matrix;


long long count_rectangles(std::vector<std::vector<int> > a) {
	int N, M;
	N = a.size();
	M = a[0].size();
	matrix = a;
	bool all1 = true;
	for(auto i : matrix){
		for(auto j:i){
			if(j != 0 and j != 1)all1 = false;
		}
	}
	if(!all1){
	ll ans = 0;
		for(int i = 1 ; i < N-1 ; i ++){
			for(int j = 1 ; j < M-1 ; j ++){
				for(int ii = i ; ii < N-1 ; ii++){
					for(int jj = j ; jj < M-1 ; jj++){
						bool valid = true;
						for(int x = i ; x <= ii ; x ++){
							for(int pp = j ; pp <= jj ; pp ++){
								int val = matrix[x][pp];
								if(!(val < matrix[x][j-1] and val < matrix[x][jj+1] and val < matrix[i-1][pp] and val < matrix[ii +1][pp])){
									pp = jj +1;
									x = ii + 1;
									valid = false;
								}
							}
						}
						if(valid)ans ++;
					}
				}
			}
		}
		
		return ans;
	}else{
		//cout << "lol" << endl;
		ll ans = 0;
		auto skip = a;
		for(int i = 0 ; i< N ; i ++){
			for(int j = 0 ; j < M ; j ++){
				skip[i][j] = j;
			}
		}
		for(int i = 1 ; i < N-1 ; i ++){
			for(int j = 1 ; j < M-1 ; j ++){
				j = skip[i][j];
				if(j >= M-1)continue;
				if(matrix[i][j] == 1 or matrix[i-1][j] != 1 or matrix[i][j-1] != 1)continue;
				int bottom = i, r = j;
				bool damaged = false;
				for(; r < M-1 ; r++){
					if(matrix[i-1][r] != 1){
						damaged = true;
						break;
					}else if(matrix[i][r+1] == 1){
						break;
					}
				}
				if(r == M-1)damaged = true;
				if(damaged){
					j = r;
					continue;
				}
				// j - r
				bottom = i+1;
				for(; bottom < N ; bottom ++){
					bool todos0 = true;
					bool todos1 = true;
					for(int k = j ; k <= r ; k ++){
						if(matrix[bottom][k] == 1){
							todos0 = false;
						}else{
							todos1 = false;
						}
					}
					if(todos0){
						if(matrix[bottom][j-1] != 1 or matrix[bottom][r+1] != 1)todos0 = false;
					}
					if(todos1){
						ans ++ ;
						//cout << i << " " << j << endl;
						break;
					}
					if(!todos1 and !todos0)break;
				}
				if(bottom == N)bottom --;
				for(int row = i ; row <= bottom ; row ++){
					for (int col = j; col <= r ; col ++){
						skip[row][col] = r + 1;
					}
				}
			}
		}
		return ans;
	}
}

# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 2 ms 212 KB Output is correct
3 Correct 2 ms 212 KB Output is correct
4 Correct 3 ms 340 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 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 1 ms 212 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 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 0 ms 212 KB Output is correct
20 Correct 0 ms 212 KB Output is correct
21 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 2 ms 212 KB Output is correct
3 Correct 2 ms 212 KB Output is correct
4 Correct 3 ms 340 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 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 1 ms 212 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 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 0 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 86 ms 356 KB Output is correct
23 Correct 84 ms 356 KB Output is correct
24 Correct 84 ms 340 KB Output is correct
25 Correct 26 ms 356 KB Output is correct
26 Correct 32 ms 356 KB Output is correct
27 Correct 32 ms 340 KB Output is correct
28 Correct 36 ms 340 KB Output is correct
29 Correct 8 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 2 ms 212 KB Output is correct
3 Correct 2 ms 212 KB Output is correct
4 Correct 3 ms 340 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 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 1 ms 212 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 212 KB Output is correct
17 Correct 86 ms 356 KB Output is correct
18 Correct 84 ms 356 KB Output is correct
19 Correct 84 ms 340 KB Output is correct
20 Correct 26 ms 356 KB Output is correct
21 Correct 32 ms 356 KB Output is correct
22 Correct 32 ms 340 KB Output is correct
23 Correct 36 ms 340 KB Output is correct
24 Correct 8 ms 340 KB Output is correct
25 Correct 0 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 0 ms 212 KB Output is correct
29 Correct 1 ms 212 KB Output is correct
30 Correct 3311 ms 764 KB Output is correct
31 Correct 3316 ms 760 KB Output is correct
32 Correct 3321 ms 764 KB Output is correct
33 Correct 973 ms 764 KB Output is correct
34 Correct 1240 ms 764 KB Output is correct
35 Correct 1240 ms 760 KB Output is correct
36 Correct 1183 ms 772 KB Output is correct
37 Correct 1175 ms 724 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 2 ms 212 KB Output is correct
3 Correct 2 ms 212 KB Output is correct
4 Correct 3 ms 340 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 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 1 ms 212 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 212 KB Output is correct
17 Correct 86 ms 356 KB Output is correct
18 Correct 84 ms 356 KB Output is correct
19 Correct 84 ms 340 KB Output is correct
20 Correct 26 ms 356 KB Output is correct
21 Correct 32 ms 356 KB Output is correct
22 Correct 32 ms 340 KB Output is correct
23 Correct 36 ms 340 KB Output is correct
24 Correct 8 ms 340 KB Output is correct
25 Correct 3311 ms 764 KB Output is correct
26 Correct 3316 ms 760 KB Output is correct
27 Correct 3321 ms 764 KB Output is correct
28 Correct 973 ms 764 KB Output is correct
29 Correct 1240 ms 764 KB Output is correct
30 Correct 1240 ms 760 KB Output is correct
31 Correct 1183 ms 772 KB Output is correct
32 Correct 1175 ms 724 KB Output is correct
33 Correct 0 ms 212 KB Output is correct
34 Correct 0 ms 212 KB Output is correct
35 Correct 0 ms 212 KB Output is correct
36 Correct 0 ms 212 KB Output is correct
37 Correct 1 ms 212 KB Output is correct
38 Execution timed out 5053 ms 6076 KB Time limit exceeded
39 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 30 ms 340 KB Output is correct
2 Correct 20 ms 340 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 15 ms 400 KB Output is correct
6 Correct 15 ms 396 KB Output is correct
7 Correct 16 ms 340 KB Output is correct
8 Correct 14 ms 340 KB Output is correct
9 Correct 17 ms 400 KB Output is correct
10 Correct 0 ms 340 KB Output is correct
11 Correct 1 ms 340 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 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 70 ms 45288 KB Output is correct
8 Correct 154 ms 110044 KB Output is correct
9 Correct 157 ms 110732 KB Output is correct
10 Correct 162 ms 110632 KB Output is correct
11 Correct 53 ms 54764 KB Output is correct
12 Correct 100 ms 103812 KB Output is correct
13 Correct 105 ms 110676 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 2 ms 212 KB Output is correct
3 Correct 2 ms 212 KB Output is correct
4 Correct 3 ms 340 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 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 1 ms 212 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 212 KB Output is correct
17 Correct 86 ms 356 KB Output is correct
18 Correct 84 ms 356 KB Output is correct
19 Correct 84 ms 340 KB Output is correct
20 Correct 26 ms 356 KB Output is correct
21 Correct 32 ms 356 KB Output is correct
22 Correct 32 ms 340 KB Output is correct
23 Correct 36 ms 340 KB Output is correct
24 Correct 8 ms 340 KB Output is correct
25 Correct 3311 ms 764 KB Output is correct
26 Correct 3316 ms 760 KB Output is correct
27 Correct 3321 ms 764 KB Output is correct
28 Correct 973 ms 764 KB Output is correct
29 Correct 1240 ms 764 KB Output is correct
30 Correct 1240 ms 760 KB Output is correct
31 Correct 1183 ms 772 KB Output is correct
32 Correct 1175 ms 724 KB Output is correct
33 Execution timed out 5053 ms 6076 KB Time limit exceeded
34 Halted 0 ms 0 KB -