Submission #39057792


Source Code Expand

#pragma GCC optimize(3)
#include <bits/stdc++.h>

using i64 = long long;

constexpr i64 inf64 = 0x3f3f3f3f3f3f3f3f;

constexpr int N = 305;
constexpr int M = 305;

constexpr double dt = 0.9997;

int n, m;
int a[N], b[M];
int p[N + M];

i64 ans;
int s[N + M];

int t1[N], t2[M];

i64 calc () {
	int k1 = 0, k2 = 0;
	std::memset(s + 1, 0, n + m << 2);
	for (int i = 1; i <= n; ++ i) {
		s[p[i]] = 1;
	}
	for (int i = 1; i <= n + m; ++ i) {
		if (s[i] == 0) {
			t2[++ k2] = std::abs(n - 2 * s[i - 1]);
		} else {
			t1[++ k1] = std::abs(m - 2 * ((i - 1) - s[i - 1]));
		}
		s[i] += s[i - 1];
	}
	
//	std::sort(c1 + 1, c1 + n + 1);
//	std::sort(c2 + 1, c2 + m + 1);
	
	i64 res = 0LL;
	
	for (int i = 1, j = n, p = 1; i <= j; ) {
		if (t1[i] >= t1[j]) {
			res += 1LL * a[p ++ ] * t1[i ++ ];
		} else {
			res += 1LL * a[p ++ ] * t1[j -- ];
		}
	}
	
	for (int i = 1, j = m, p = 1; i <= j; ) {
		if (t2[i] >= t2[j]) {
			res += 1LL * b[p ++ ] * t2[i ++ ];
		} else {
			res += 1LL * b[p ++ ] * t2[j -- ];
		}
	}
	
	ans = std::min(ans, res);
	return res;
}

int main () {
	
	auto Bg = clock();
	auto Time = [&]() -> double {
		return double(clock() - Bg) / CLOCKS_PER_SEC;
	};
	
	std::ios::sync_with_stdio(0);
	std::cin.tie(nullptr);
	
	srand(time(0) * ((unsigned long long)new char));
	
	std::cin >> n >> m;
	for (int i = 1; i <= n; ++ i) {
		std::cin >> a[i];
	}
	for (int i = 1; i <= m; ++ i) {
		std::cin >> b[i];
	}
	
	std::sort(a + 1, a + n + 1);
	std::sort(b + 1, b + m + 1);
	
	std::iota(p + 1, p + (n + m) + 1, 1);
	std::shuffle(p + 1, p + (n + m) + 1, std::mt19937 (1206));
	
	ans = inf64;
	i64 cur = calc();
	
	for (double t = 1e6; Time() < 1.9; t *= dt) {
		int i = rand() % n + 1, j = rand() % m + n + 1;
		std::swap(p[i], p[j]);
		i64 nxt = calc();
		if (nxt <= cur) {
			cur = nxt;
		} else {
			const double prob = exp(-(nxt - cur) / t);
			if (rand() < prob * 2147483647) {
				cur = nxt;
			} else {
				std::swap(p[i], p[j]);
			}
		}
	}
	
	std::cout << ans << "\n";
	
	return 0;
}

Submission Info

Submission Time
Task Ex - Bow Meow Optimization
User fhqTreap
Language C++ (GCC 9.2.1)
Score 600
Code Size 2103 Byte
Status AC
Exec Time 1912 ms
Memory 4168 KiB

Compile Error

./Main.cpp: In function ‘i64 calc()’:
./Main.cpp:24:26: warning: suggest parentheses around ‘+’ inside ‘<<’ [-Wparentheses]
   24 |  std::memset(s + 1, 0, n + m << 2);
      |                        ~~^~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 90
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_small_00.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 01_small_04.txt, 01_small_05.txt, 01_small_06.txt, 01_small_07.txt, 01_small_08.txt, 01_small_09.txt, 02_large_00.txt, 02_large_01.txt, 02_large_02.txt, 02_large_03.txt, 02_large_04.txt, 02_large_05.txt, 02_large_06.txt, 02_large_07.txt, 02_large_08.txt, 02_large_09.txt, 02_large_10.txt, 02_large_11.txt, 02_large_12.txt, 02_large_13.txt, 02_large_14.txt, 02_large_15.txt, 02_large_16.txt, 02_large_17.txt, 02_large_18.txt, 02_large_19.txt, 02_large_20.txt, 02_large_21.txt, 02_large_22.txt, 02_large_23.txt, 02_large_24.txt, 02_large_25.txt, 02_large_26.txt, 02_large_27.txt, 02_large_28.txt, 02_large_29.txt, 02_large_30.txt, 02_large_31.txt, 02_large_32.txt, 02_large_33.txt, 02_large_34.txt, 02_large_35.txt, 02_large_36.txt, 02_large_37.txt, 02_large_38.txt, 02_large_39.txt, 02_large_40.txt, 02_large_41.txt, 02_large_42.txt, 02_large_43.txt, 02_large_44.txt, 02_large_45.txt, 02_large_46.txt, 02_large_47.txt, 02_large_48.txt, 02_large_49.txt, 02_large_50.txt, 02_large_51.txt, 02_large_52.txt, 02_large_53.txt, 02_large_54.txt, 02_large_55.txt, 02_large_56.txt, 02_large_57.txt, 02_large_58.txt, 02_large_59.txt, 02_large_60.txt, 02_large_61.txt, 02_large_62.txt, 02_large_63.txt, 02_large_64.txt, 02_large_65.txt, 02_large_66.txt, 02_large_67.txt, 03_handmade_00.txt, 03_handmade_01.txt, 03_handmade_02.txt, 03_handmade_03.txt, 03_handmade_04.txt, 03_handmade_05.txt, 03_handmade_06.txt, 03_handmade_07.txt, 03_handmade_08.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1912 ms 4160 KiB
00_sample_01.txt AC 1904 ms 4064 KiB
00_sample_02.txt AC 1904 ms 4080 KiB
01_small_00.txt AC 1908 ms 3856 KiB
01_small_01.txt AC 1912 ms 3928 KiB
01_small_02.txt AC 1908 ms 3836 KiB
01_small_03.txt AC 1908 ms 3864 KiB
01_small_04.txt AC 1904 ms 3832 KiB
01_small_05.txt AC 1907 ms 3852 KiB
01_small_06.txt AC 1912 ms 3880 KiB
01_small_07.txt AC 1904 ms 3952 KiB
01_small_08.txt AC 1908 ms 3896 KiB
01_small_09.txt AC 1912 ms 3804 KiB
02_large_00.txt AC 1908 ms 3984 KiB
02_large_01.txt AC 1908 ms 3776 KiB
02_large_02.txt AC 1904 ms 3860 KiB
02_large_03.txt AC 1904 ms 3868 KiB
02_large_04.txt AC 1904 ms 3816 KiB
02_large_05.txt AC 1908 ms 3816 KiB
02_large_06.txt AC 1904 ms 4004 KiB
02_large_07.txt AC 1904 ms 3844 KiB
02_large_08.txt AC 1908 ms 3836 KiB
02_large_09.txt AC 1912 ms 3908 KiB
02_large_10.txt AC 1904 ms 3996 KiB
02_large_11.txt AC 1908 ms 3928 KiB
02_large_12.txt AC 1904 ms 3992 KiB
02_large_13.txt AC 1907 ms 3832 KiB
02_large_14.txt AC 1908 ms 3848 KiB
02_large_15.txt AC 1912 ms 3952 KiB
02_large_16.txt AC 1904 ms 3776 KiB
02_large_17.txt AC 1904 ms 3996 KiB
02_large_18.txt AC 1904 ms 3836 KiB
02_large_19.txt AC 1908 ms 3856 KiB
02_large_20.txt AC 1904 ms 3868 KiB
02_large_21.txt AC 1904 ms 3844 KiB
02_large_22.txt AC 1904 ms 3884 KiB
02_large_23.txt AC 1908 ms 3832 KiB
02_large_24.txt AC 1908 ms 3888 KiB
02_large_25.txt AC 1912 ms 3744 KiB
02_large_26.txt AC 1907 ms 3848 KiB
02_large_27.txt AC 1908 ms 3952 KiB
02_large_28.txt AC 1908 ms 4008 KiB
02_large_29.txt AC 1908 ms 3960 KiB
02_large_30.txt AC 1904 ms 3740 KiB
02_large_31.txt AC 1912 ms 3612 KiB
02_large_32.txt AC 1904 ms 4008 KiB
02_large_33.txt AC 1907 ms 3868 KiB
02_large_34.txt AC 1911 ms 3960 KiB
02_large_35.txt AC 1907 ms 3964 KiB
02_large_36.txt AC 1912 ms 3680 KiB
02_large_37.txt AC 1908 ms 3876 KiB
02_large_38.txt AC 1903 ms 3644 KiB
02_large_39.txt AC 1907 ms 4136 KiB
02_large_40.txt AC 1907 ms 4056 KiB
02_large_41.txt AC 1904 ms 3956 KiB
02_large_42.txt AC 1908 ms 4116 KiB
02_large_43.txt AC 1911 ms 3880 KiB
02_large_44.txt AC 1904 ms 3856 KiB
02_large_45.txt AC 1904 ms 4028 KiB
02_large_46.txt AC 1912 ms 3952 KiB
02_large_47.txt AC 1908 ms 3992 KiB
02_large_48.txt AC 1908 ms 3872 KiB
02_large_49.txt AC 1912 ms 3844 KiB
02_large_50.txt AC 1908 ms 3868 KiB
02_large_51.txt AC 1907 ms 3704 KiB
02_large_52.txt AC 1912 ms 3704 KiB
02_large_53.txt AC 1903 ms 3744 KiB
02_large_54.txt AC 1911 ms 3908 KiB
02_large_55.txt AC 1907 ms 4024 KiB
02_large_56.txt AC 1904 ms 3832 KiB
02_large_57.txt AC 1904 ms 3948 KiB
02_large_58.txt AC 1904 ms 3960 KiB
02_large_59.txt AC 1904 ms 3960 KiB
02_large_60.txt AC 1904 ms 4008 KiB
02_large_61.txt AC 1911 ms 3840 KiB
02_large_62.txt AC 1907 ms 4016 KiB
02_large_63.txt AC 1904 ms 3992 KiB
02_large_64.txt AC 1904 ms 3856 KiB
02_large_65.txt AC 1907 ms 3992 KiB
02_large_66.txt AC 1904 ms 3952 KiB
02_large_67.txt AC 1907 ms 3880 KiB
03_handmade_00.txt AC 1908 ms 3548 KiB
03_handmade_01.txt AC 1908 ms 4000 KiB
03_handmade_02.txt AC 1907 ms 4120 KiB
03_handmade_03.txt AC 1908 ms 4156 KiB
03_handmade_04.txt AC 1904 ms 4116 KiB
03_handmade_05.txt AC 1908 ms 4112 KiB
03_handmade_06.txt AC 1912 ms 4120 KiB
03_handmade_07.txt AC 1912 ms 4132 KiB
03_handmade_08.txt AC 1912 ms 4168 KiB