Submission #390434

# Submission time Handle Problem Language Result Execution time Memory
390434 2021-04-16T04:51:10 Z arwaeystoamneg Quality Of Living (IOI10_quality) C++17
100 / 100
1784 ms 138592 KB
// EXPLOSION!
#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#include<unordered_set>
#include<unordered_map>
#include<chrono>

using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<pair<int, int>> vpi;
typedef vector<pair<ll, ll>> vpll;

#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define F0R(i,a) FOR(i,0,a)
#define ROF(i,a,b) for (int i = (b)-1; i >= (a); --i)
#define R0F(i,a) ROF(i,0,a)
#define trav(a,x) for (auto& a: x)

#define pb push_back
#define mp make_pair
#define rsz resize
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()
#define f first
#define s second
#define cont continue
//#define endl '\n'
//#define ednl '\n'
#define test int testc;cin>>testc;while(testc--)
#define pr(a, b) trav(x,a)cerr << x << b; cerr << endl;
#define message cout << "Hello World" << endl;
const int dx[4] = { 1,0,-1,0 }, dy[4] = { 0,1,0,-1 }; // for every grid problem!!
const ll linf = 4000000000000000000LL;
const ll inf = 1000000007;//998244353    

void pv(vi a) { trav(x, a)cout << x << " "; cout << endl; }void pv(vll a) { trav(x, a)cout << x << " "; cout << endl; }void pv(vector<vi>a) {
	F0R(i, sz(a)) { cout << i << endl; pv(a[i]); cout << endl; }
}void pv(vector<vll>a) { F0R(i, sz(a)) { cout << i << endl; pv(a[i]); }cout << endl; }void pv(vector<string>a) { trav(x, a)cout << x << endl; cout << endl; }
void setIO(string s) {
	ios_base::sync_with_stdio(0); cin.tie(0);
	if (sz(s))
	{
		freopen((s + ".in").c_str(), "r", stdin);
		if (s != "test1")
			freopen((s + ".out").c_str(), "w", stdout);
	}
}
#include "quality.h"
const int MAX = 3001;
int n, m, h, w, a[MAX][MAX], prefix[MAX][MAX];
int get(int xl, int xr, int yl, int yr)
{
	return prefix[xr + 1][yr + 1] - prefix[xr + 1][yl] - prefix[xl][yr + 1] + prefix[xl][yl];
}
int check()
{
	F0R(i, n)F0R(j, m)prefix[i + 1][j + 1] = prefix[i + 1][j] + prefix[i][j + 1] - prefix[i][j] + a[i][j];
	F0R(i, n - h + 1)
	{
		F0R(j, m - w + 1)
		{
			int val = get(i, i + h - 1, j, j + w - 1);
			if (val >= ((h * w + 1) / 2))return 1;
		}
	}
	return 0;
}
int rectangle(int R, int C, int H, int W, int Q[3001][3001]) {
	n = R, m = C, h = H, w = W;
	int l = 1, r = n * m;
	while (l < r)
	{
		int mid = (l + r) / 2;
		F0R(i, n)F0R(j, m)if (Q[i][j] <= mid)a[i][j] = 1; else a[i][j] = 0;
		if (check())r = mid;
		else l = mid + 1;
	}
	return l;
}



#ifdef arwaeystoamneg
static int R, C, H, W, Q[3001][3001], i, j, ans;
int main() {
	setIO("test1");
	scanf("%d%d%d%d", &R, &C, &H, &W);
	for (i = 0; i < R; i++) for (j = 0; j < C; j++) scanf("%d", &Q[i][j]);
	ans = rectangle(R, C, H, W, Q);
	printf("%d\n", ans);
	return 0;
}

#endif

Compilation message

quality.cpp: In function 'void setIO(std::string)':
quality.cpp:48:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   48 |   freopen((s + ".in").c_str(), "r", stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
quality.cpp:50:11: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   50 |    freopen((s + ".out").c_str(), "w", stdout);
      |    ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 588 KB Output is correct
2 Correct 1 ms 588 KB Output is correct
3 Correct 1 ms 588 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 588 KB Output is correct
2 Correct 1 ms 588 KB Output is correct
3 Correct 1 ms 588 KB Output is correct
4 Correct 3 ms 1592 KB Output is correct
5 Correct 3 ms 1592 KB Output is correct
6 Correct 3 ms 1612 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 588 KB Output is correct
2 Correct 1 ms 588 KB Output is correct
3 Correct 1 ms 588 KB Output is correct
4 Correct 3 ms 1592 KB Output is correct
5 Correct 3 ms 1592 KB Output is correct
6 Correct 3 ms 1612 KB Output is correct
7 Correct 18 ms 5452 KB Output is correct
8 Correct 18 ms 5468 KB Output is correct
9 Correct 16 ms 5292 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 588 KB Output is correct
2 Correct 1 ms 588 KB Output is correct
3 Correct 1 ms 588 KB Output is correct
4 Correct 3 ms 1592 KB Output is correct
5 Correct 3 ms 1592 KB Output is correct
6 Correct 3 ms 1612 KB Output is correct
7 Correct 18 ms 5452 KB Output is correct
8 Correct 18 ms 5468 KB Output is correct
9 Correct 16 ms 5292 KB Output is correct
10 Correct 201 ms 30788 KB Output is correct
11 Correct 197 ms 30788 KB Output is correct
12 Correct 109 ms 21420 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 588 KB Output is correct
2 Correct 1 ms 588 KB Output is correct
3 Correct 1 ms 588 KB Output is correct
4 Correct 3 ms 1592 KB Output is correct
5 Correct 3 ms 1592 KB Output is correct
6 Correct 3 ms 1612 KB Output is correct
7 Correct 18 ms 5452 KB Output is correct
8 Correct 18 ms 5468 KB Output is correct
9 Correct 16 ms 5292 KB Output is correct
10 Correct 201 ms 30788 KB Output is correct
11 Correct 197 ms 30788 KB Output is correct
12 Correct 109 ms 21420 KB Output is correct
13 Correct 1784 ms 138544 KB Output is correct
14 Correct 1745 ms 138592 KB Output is correct
15 Correct 1633 ms 135068 KB Output is correct