Submission #726584

# Submission time Handle Problem Language Result Execution time Memory
726584 2023-04-19T05:59:07 Z horiseun Quality Of Living (IOI10_quality) C++14
100 / 100
2165 ms 175400 KB
#include <iostream>
#include <vector>
#include <tuple>
#include <queue>
#include <stack>
#include <deque>
#include <set>
#include <map>
#include <cmath>
#include <random>
#include <string>
#include <cassert>
#include <climits>
#include <algorithm>
#include <unordered_set>
#include <unordered_map>
#include "quality.h"
using namespace std;

#define ll long long
#define f first
#define s second

int r, c, h, w, q[3001][3001], pref[3001][3001];

bool possible(int x) {
	fill(&pref[0][0], &pref[0][0] + sizeof(pref) / sizeof(pref[0][0]), 0);
	for (int i = 1; i <= r; i++) {
		for (int j = 1; j <= c; j++) {
			if (q[i][j] == x) {
			} else if (q[i][j] > x) pref[i][j] = -1;
			else pref[i][j] = 1;
			pref[i][j] += pref[i - 1][j];
			pref[i][j] += pref[i][j - 1];
			pref[i][j] -= pref[i - 1][j - 1];
		}
	}
	for (int i = h; i <= r; i++) {
		for (int j = w; j <= c; j++) {
			if (pref[i][j] - pref[i - h][j] - pref[i][j - w] + pref[i - h][j - w] >= 0) return true;
		}
	}
	return false;
}

int rectangle(int R, int C, int H, int W, int Q[3001][3001]) {
	r = R, c = C, h = H, w = W;
	for (int i = 1; i <= R; i++) for (int j = 1; j <= C; j++) q[i][j] = Q[i - 1][j - 1];
	int lft = 1, rht = R * C, ret = R * C;
	while (lft <= rht) {
		int mid = (lft + rht) / 2;
		if (possible(mid)) {
			rht = mid - 1;
			ret = mid;
		} else lft = mid + 1;
	}
	return ret;
}
# Verdict Execution time Memory Grader output
1 Correct 44 ms 35796 KB Output is correct
2 Correct 49 ms 35788 KB Output is correct
3 Correct 47 ms 35796 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 44 ms 35796 KB Output is correct
2 Correct 49 ms 35788 KB Output is correct
3 Correct 47 ms 35796 KB Output is correct
4 Correct 64 ms 36480 KB Output is correct
5 Correct 62 ms 36436 KB Output is correct
6 Correct 66 ms 36436 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 44 ms 35796 KB Output is correct
2 Correct 49 ms 35788 KB Output is correct
3 Correct 47 ms 35796 KB Output is correct
4 Correct 64 ms 36480 KB Output is correct
5 Correct 62 ms 36436 KB Output is correct
6 Correct 66 ms 36436 KB Output is correct
7 Correct 91 ms 39252 KB Output is correct
8 Correct 94 ms 39176 KB Output is correct
9 Correct 85 ms 39060 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 44 ms 35796 KB Output is correct
2 Correct 49 ms 35788 KB Output is correct
3 Correct 47 ms 35796 KB Output is correct
4 Correct 64 ms 36480 KB Output is correct
5 Correct 62 ms 36436 KB Output is correct
6 Correct 66 ms 36436 KB Output is correct
7 Correct 91 ms 39252 KB Output is correct
8 Correct 94 ms 39176 KB Output is correct
9 Correct 85 ms 39060 KB Output is correct
10 Correct 287 ms 58184 KB Output is correct
11 Correct 286 ms 58104 KB Output is correct
12 Correct 181 ms 50672 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 44 ms 35796 KB Output is correct
2 Correct 49 ms 35788 KB Output is correct
3 Correct 47 ms 35796 KB Output is correct
4 Correct 64 ms 36480 KB Output is correct
5 Correct 62 ms 36436 KB Output is correct
6 Correct 66 ms 36436 KB Output is correct
7 Correct 91 ms 39252 KB Output is correct
8 Correct 94 ms 39176 KB Output is correct
9 Correct 85 ms 39060 KB Output is correct
10 Correct 287 ms 58184 KB Output is correct
11 Correct 286 ms 58104 KB Output is correct
12 Correct 181 ms 50672 KB Output is correct
13 Correct 2165 ms 175400 KB Output is correct
14 Correct 2035 ms 175400 KB Output is correct
15 Correct 1879 ms 168400 KB Output is correct