Submission #3658898


Source Code Expand

#include <bits/stdc++.h>

using namespace std;

#define FORE(i, a) for (auto i = a.begin(); i != a.end(); ++i)
#define REPU(i, a, b) for (int i = (a); i < (b); ++i)
#define REPD(i, a, b) for (int i = (a); i > (b); --i)
#define MEM(a, x) memset(a, x, sizeof(a))
#define ALL(a) a.begin(), a.end()
#define UNIQUE(a) a.erase(unique(ALL(a)), a.end())

vector<string> split(const string &s, char c) {
	vector<string> v; stringstream ss(s); string x;
	while (getline(ss, x, c)) v.push_back(x);
	return v;
}
#define DEBUG(args...) { vector<string> _v = split(#args, ','); err(_v.begin(), args); }
void err(vector<string>::iterator it) {}
template<typename T, typename... Args>
void err(vector<string>::iterator it, T a, Args... args) {
	cerr << "[DEBUG] " << it -> substr((*it)[0] == ' ', it -> length()) << " = " << a << '\n';
	err(++it, args...);
}

typedef long long ll;
const int MOD = 1000000007;

template<class T, class U> inline T tmin(T a, U b) { return (a < b) ? a : b; }
template<class T, class U> inline T tmax(T a, U b) { return (a > b) ? a : b; }
template<class T, class U> inline void amax(T &a, U b) { if (b > a) a = b; }
template<class T, class U> inline void amin(T &a, U b) { if (b < a) a = b; }
template<class T> T gcd(T a, T b) { while (b != 0) { T c = a; a = b; b = c % b; } return a; }

const int N = 1000005;
int x[N], y[N];

int main(int argc, char *argv[]) {
	ios_base::sync_with_stdio(false);

	int n, D; cin >> n >> D;

	if (D > 30) return 0;
	vector<int> cnt(D * D, 0);
	REPU(i, 0, n) {
		cin >> x[i] >> y[i];
		x[i] %= D;
		y[i] %= D;
		cnt[x[i] * D + y[i]]++;
	}

	int ans = INT_MAX;
	int lb = 0, rb = 1000000000;
	while (rb - lb > 1) {
		int mb = (lb + rb) >> 1;
		bool ok(false);
		REPU(r, 0, D) {
			REPU(c, 0, D) {
				bool ok2(true);
				REPU(i, 0, D * D) if (cnt[i] > 0) {
					int vx = i / D, vy = i % D;
					if (vx < r) vx += D;
					if (vy < c) vy += D;
					if (mb + r < vx || mb + c < vy || ((mb + r - vx) / D + 1) * 1LL * ((mb + c - vy) / D + 1) < cnt[i]) {
						ok2 = false; break;
					}
				}
				if (ok2) {
					ok = true; break;
				}
				if (ok) break;
			}
		}
		if (ok) rb = mb;
		else lb = mb;
	}
	cout << rb << endl;

	return 0;
}

Submission Info

Submission Time
Task D - Square Rotation
User rantd
Language C++14 (GCC 5.4.1)
Score 500
Code Size 2257 Byte
Status WA
Exec Time 34 ms
Memory 4736 KiB

Judge Result

Set Name All small
Score / Max Score 0 / 300 500 / 500
Status
AC × 53
WA × 16
AC × 71
Set Name Test Cases
All 00_sample_00, 00_sample_01, 00_sample_02, 01_corner2_00, 01_corner2_01, 01_corner2_02, 01_corner2_03, 01_corner_00, 01_corner_01, 01_corner_02, 01_corner_03, 01_corner_04, 01_corner_05, 01_corner_06, 01_corner_07, 01_corner_08, 01_corner_09, 01_corner_10, 01_corner_11, 01_corner_12, 01_corner_13, 01_corner_14, 01_corner_15, 01_corner_16, 01_small1_00, 01_small1_01, 01_small1_02, 01_small1_03, 01_small1_04, 01_small2_00, 01_small2_01, 01_small2_02, 01_small3_00, 01_small3_01, 01_small3_02, 01_small3_03, 01_small3_04, 01_small4_00, 01_small4_01, 01_small4_02, 01_small5_00, 01_small5_01, 01_small5_02, 01_small5_03, 01_small5_04, 02_corner2_00, 02_corner2_01, 02_corner2_02, 02_corner2_03, 02_corner_00, 02_corner_01, 02_corner_02, 02_corner_03, 02_large1_00, 02_large1_01, 02_large1_02, 02_large1_03, 02_large1_04, 02_large2_00, 02_large2_01, 02_large2_02, 02_large3_00, 02_large3_01, 02_large3_02, 02_large3_03, 02_large3_04, 02_large4_00, 02_large4_01, 02_large4_02
small 01_corner2_00, 01_corner2_01, 01_corner2_02, 01_corner2_03, 01_corner_00, 01_corner_01, 01_corner_02, 01_corner_03, 01_corner_04, 01_corner_05, 01_corner_06, 01_corner_07, 01_corner_08, 01_corner_09, 01_corner_10, 01_corner_11, 01_corner_12, 01_corner_13, 01_corner_14, 01_corner_15, 01_corner_16, 01_small1_00, 01_small1_01, 01_small1_02, 01_small1_03, 01_small1_04, 01_small2_00, 01_small2_01, 01_small2_02, 01_small3_00, 01_small3_01, 01_small3_02, 01_small3_03, 01_small3_04, 01_small4_00, 01_small4_01, 01_small4_02, 01_small5_00, 01_small5_01, 01_small5_02, 01_small5_03, 01_small5_04, 01_corner2_00, 01_corner2_01, 01_corner2_02, 01_corner2_03, 01_corner_00, 01_corner_01, 01_corner_02, 01_corner_03, 01_corner_04, 01_corner_05, 01_corner_06, 01_corner_07, 01_corner_08, 01_corner_09, 01_corner_10, 01_corner_11, 01_corner_12, 01_corner_13, 01_corner_14, 01_corner_15, 01_corner_16, 02_corner2_00, 02_corner2_01, 02_corner2_02, 02_corner2_03, 02_corner_00, 02_corner_01, 02_corner_02, 02_corner_03
Case Name Status Exec Time Memory
00_sample_00 AC 2 ms 2304 KiB
00_sample_01 AC 2 ms 2304 KiB
00_sample_02 AC 2 ms 2304 KiB
01_corner2_00 AC 3 ms 2304 KiB
01_corner2_01 AC 2 ms 2304 KiB
01_corner2_02 AC 6 ms 2304 KiB
01_corner2_03 AC 17 ms 4608 KiB
01_corner_00 AC 3 ms 2304 KiB
01_corner_01 AC 5 ms 2304 KiB
01_corner_02 AC 7 ms 2432 KiB
01_corner_03 AC 7 ms 2432 KiB
01_corner_04 AC 4 ms 2304 KiB
01_corner_05 AC 10 ms 2432 KiB
01_corner_06 AC 3 ms 2304 KiB
01_corner_07 AC 3 ms 2304 KiB
01_corner_08 AC 14 ms 4608 KiB
01_corner_09 AC 2 ms 2304 KiB
01_corner_10 AC 2 ms 2304 KiB
01_corner_11 AC 2 ms 2304 KiB
01_corner_12 AC 2 ms 2304 KiB
01_corner_13 AC 9 ms 2432 KiB
01_corner_14 AC 3 ms 2304 KiB
01_corner_15 AC 2 ms 2304 KiB
01_corner_16 AC 3 ms 2304 KiB
01_small1_00 AC 30 ms 4736 KiB
01_small1_01 AC 34 ms 4608 KiB
01_small1_02 AC 19 ms 2432 KiB
01_small1_03 AC 31 ms 4608 KiB
01_small1_04 AC 13 ms 4608 KiB
01_small2_00 AC 14 ms 2432 KiB
01_small2_01 AC 3 ms 2304 KiB
01_small2_02 AC 11 ms 2304 KiB
01_small3_00 AC 3 ms 2304 KiB
01_small3_01 AC 3 ms 2304 KiB
01_small3_02 AC 5 ms 2432 KiB
01_small3_03 AC 3 ms 2304 KiB
01_small3_04 AC 3 ms 2304 KiB
01_small4_00 AC 19 ms 4736 KiB
01_small4_01 AC 2 ms 2304 KiB
01_small4_02 AC 3 ms 2304 KiB
01_small5_00 AC 2 ms 2304 KiB
01_small5_01 AC 2 ms 2304 KiB
01_small5_02 AC 2 ms 2304 KiB
01_small5_03 AC 2 ms 2304 KiB
01_small5_04 AC 2 ms 2304 KiB
02_corner2_00 AC 3 ms 2304 KiB
02_corner2_01 AC 5 ms 2432 KiB
02_corner2_02 AC 5 ms 2432 KiB
02_corner2_03 AC 3 ms 2304 KiB
02_corner_00 AC 2 ms 2304 KiB
02_corner_01 AC 4 ms 2304 KiB
02_corner_02 AC 7 ms 2432 KiB
02_corner_03 AC 2 ms 2304 KiB
02_large1_00 WA 1 ms 256 KiB
02_large1_01 WA 1 ms 256 KiB
02_large1_02 WA 1 ms 256 KiB
02_large1_03 WA 1 ms 256 KiB
02_large1_04 WA 1 ms 256 KiB
02_large2_00 WA 1 ms 256 KiB
02_large2_01 WA 1 ms 256 KiB
02_large2_02 WA 1 ms 256 KiB
02_large3_00 WA 1 ms 256 KiB
02_large3_01 WA 1 ms 256 KiB
02_large3_02 WA 1 ms 256 KiB
02_large3_03 WA 1 ms 256 KiB
02_large3_04 WA 1 ms 256 KiB
02_large4_00 WA 1 ms 256 KiB
02_large4_01 WA 1 ms 256 KiB
02_large4_02 WA 1 ms 256 KiB