답안 #495079

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
495079 2021-12-18T04:25:11 Z armashka Chessboard (IZhO18_chessboard) C++17
23 / 100
2000 ms 62944 KB
#include <bits/stdc++.h>
 
//#pragma comment(linker, "/stack:200000000")
//#pragma GCC optimize("Ofast")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
 
#define fast ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
#define all(v) v.begin(),v.end()
#define pb push_back
#define sz size()
#define ft first
#define sd second
 
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef unsigned long long ull;
 
const int N = 1e6 + 5;
const ll M = 1e8;
const ll inf = 1e9;
const ll mod = 1e9;
const double Pi = acos(-1); 
 
ll binpow(ll x, ll ti) { ll res = 1;while (ti){if(ti & 1)res *= x;x *= x;ti >>= 1; x %= mod; res %= mod;} return res;}
ll binmul(ll x, ll ti) { ll res = 0;while (ti){if(ti & 1)res += x;x += x;ti >>= 1; x %= mod; res %= mod;} return res;}
ll nok(ll a, ll b) { return (a*b)/__gcd(abs(a),abs(b)) * (a*b > 0 ? 1 : -1); }
bool odd(ll n) { return (n % 2 == 1); }
bool even(ll n) { return (n % 2 == 0); }            
                                                                    
int n, k, ans = inf;
map <pair<int, int>, bool> bl;
 
void check(int razmer) {
	int cnt = 0;
	for (int i = 1; i <= n; ++ i) {
		for (int j = 1; j <= n; ++ j) {
			int num = ((i - 1) / razmer) + ((j - 1) / razmer);
			if (even(num) && !bl[{i, j}]) ++ cnt;
			if (odd(num) && bl[{i, j}]) ++ cnt; 
		}
	}
	//cout << razmer << " " << min(cnt, n * n - cnt) << "\n";
	ans = min(ans, min(cnt, n * n - cnt));
	return;
}
 
const void solve(/*Armashka*/) {
	cin >> n >> k;
	int c1 = (n * n) / 2, c2 = (n * n) - c1, cnt1 = 0, cnt2 = 0;
	bool ok = 1;
	for (int i = 1; i <= k; ++ i) {
		int x1, y1, x2, y2;
		cin >> x1 >> y1 >> x2 >> y2;
		if ((x2 - x1 + 1) * (y2 - y1 + 1) != 1) ok = 0;
		if (x1 % 2 == y1 % 2) ++ cnt2;
		else ++ cnt1;
		for (int i = y1; i <= y2; ++ i) {
			for (int j = x1; j <= x2; ++ j) bl[{i, j}] = 1;
		}
	}
	for (int i = 2; i * i <= n; ++ i) {
		if (n % i == 0) { ok = 0; break; }
	}
	if (ok) {
		cout << min((c1 - cnt1) + cnt2, (c2 - cnt2) + cnt1) << "\n";
		return;
	}
	for (int i = 1; i * i <= n; ++ i) {
		if (n % i == 0) {
			check(i);
			if (n / i != i && i > 1) check(n / i);
		}
	}
	cout << ans << "\n";
}
 
signed main() {
    fast;
	//freopen("divide.in", "r", stdin);
	//freopen("divide.out", "w", stdout);
    int tt = 1;
    //cin >> tt;
    while (tt --) {
    	solve();
	}
}
 
/*
 
6 8
3 3 3 3
1 2 1 2
3 4 3 4
5 5 5 5
4 3 4 3
4 4 4 4
2 1 2 1
3 6 3 6
 
*/
 
/*
9 12
1 9 4
1 2 5
2 3 7
2 4 3
4 3 6
3 6 4
8 7 10
6 7 5
5 8 1
9 5 7
5 4 12
6 8 2
2
4 7
5
1 6
5 3
4 8
5 8
1 5
 
*/
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 7 ms 844 KB Output is correct
3 Correct 5 ms 844 KB Output is correct
4 Correct 5 ms 844 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 11 ms 884 KB Output is correct
7 Correct 4 ms 844 KB Output is correct
8 Correct 5 ms 844 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 65 ms 4092 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 588 KB Output is correct
2 Correct 3 ms 460 KB Output is correct
3 Correct 6 ms 588 KB Output is correct
4 Correct 4 ms 588 KB Output is correct
5 Correct 3 ms 588 KB Output is correct
6 Correct 3 ms 588 KB Output is correct
7 Correct 3 ms 716 KB Output is correct
8 Correct 2 ms 460 KB Output is correct
9 Correct 3 ms 844 KB Output is correct
10 Correct 0 ms 204 KB Output is correct
11 Correct 2 ms 588 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 3 ms 588 KB Output is correct
14 Correct 4 ms 588 KB Output is correct
15 Correct 2 ms 448 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 588 KB Output is correct
2 Correct 3 ms 460 KB Output is correct
3 Correct 6 ms 588 KB Output is correct
4 Correct 4 ms 588 KB Output is correct
5 Correct 3 ms 588 KB Output is correct
6 Correct 3 ms 588 KB Output is correct
7 Correct 3 ms 716 KB Output is correct
8 Correct 2 ms 460 KB Output is correct
9 Correct 3 ms 844 KB Output is correct
10 Correct 0 ms 204 KB Output is correct
11 Correct 2 ms 588 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 3 ms 588 KB Output is correct
14 Correct 4 ms 588 KB Output is correct
15 Correct 2 ms 448 KB Output is correct
16 Correct 324 ms 57264 KB Output is correct
17 Correct 59 ms 6284 KB Output is correct
18 Correct 441 ms 62944 KB Output is correct
19 Execution timed out 2021 ms 58708 KB Time limit exceeded
20 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 65 ms 4092 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 7 ms 844 KB Output is correct
3 Correct 5 ms 844 KB Output is correct
4 Correct 5 ms 844 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 11 ms 884 KB Output is correct
7 Correct 4 ms 844 KB Output is correct
8 Correct 5 ms 844 KB Output is correct
9 Incorrect 65 ms 4092 KB Output isn't correct
10 Halted 0 ms 0 KB -