Submission #67006437
Source Code Expand
#include <bits/stdc++.h>
std::vector<long long> duplicate(const std::vector<long long> &a, long long m, int l, int r) {
std::vector<long long> ans;
for(int i = l; i <= r; i++) {
// std::cout << "with i " << i << std::endl;
for(auto x : a) {
ans.push_back(x + i * m);
}
}
return ans;
}
bool check(int x, std::vector<long long> &a, std::vector<long long> &b, int n, int m) {
// std::cout << "checking for " << x << '\n';
std::vector<int> l(2 * n), r(2 * n);
for(int i = 0, j = 0, k = 0; i < 2 * n; i++) {
while(j < 3 * n && a[j] < b[i]) j++;
while(k < 3 * n && a[k] <= b[i] + x) k++;
l[i] = j, r[i] = k;
// std::cout << "range for " << i << " is " << l[i] << ", " << r[i] << '\n';
if(r[i] - l[i] == 0) return false;
}
int worst = r[0] - l[0] - 1;
for(int i = 1; i < 2 * n; i++) {
worst = std::min(worst + r[i] - r[i-1], r[i] - l[i]) - 1;
// std::cout << "at " << i << " got " << worst << std::endl;
if(worst < 0) return false;
}
return true;
}
int main() {
std::ios_base::sync_with_stdio(false); std::cin.tie(NULL);
int t;
std::cin >> t;
while(t--) {
int n, m;
std::cin >> n >> m;
std::vector<long long> a(n), b(n);
for(int i = 0; i < n; i++) std::cin >> a[i];
for(int i = 0; i < n; i++) std::cin >> b[i];
for(int i = 0; i < n; i++) b[i] = (m - b[i]) % m;
std::sort(a.begin(), a.end()), std::sort(b.begin(), b.end());
a = duplicate(a, m, 0, 2), b = duplicate(b, m, 0, 1);
int l = 0, r = m-1;
while(l != r) {
int mid = (l + r) / 2;
if(check(mid, a, b, n, m)) {
r = mid;
} else {
l = mid + 1;
}
}
std::cout << l << '\n';
}
}
Submission Info
Submission Time
2025-06-22 22:26:06+0900
Task
D - Match, Mod, Minimize
User
tfg
Language
C++ 20 (gcc 12.2)
Score
700
Code Size
1923 Byte
Status
AC
Exec Time
408 ms
Memory
24936 KiB
Compile Error
Main.cpp: In function ‘bool check(int, std::vector<long long int>&, std::vector<long long int>&, int, int)’:
Main.cpp:14:84: warning: unused parameter ‘m’ [-Wunused-parameter]
14 | bool check(int x, std::vector<long long> &a, std::vector<long long> &b, int n, int m) {
| ~~~~^
Judge Result
Set Name
Sample
All
Score / Max Score
0 / 0
700 / 700
Status
Set Name
Test Cases
Sample
sample-01.txt
All
01-01.txt, 01-02.txt, 01-03.txt, 01-05.txt, 01-06.txt, 01-07.txt, 02-01.txt, 02-02.txt, 02-03.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 04-01.txt, 04-02.txt, 05-01.txt, 05-02.txt, 05-03.txt, 05-04.txt, 05-05.txt, 05-06.txt, sample-01.txt
Case Name
Status
Exec Time
Memory
01-01.txt
AC
257 ms
3336 KiB
01-02.txt
AC
219 ms
3480 KiB
01-03.txt
AC
172 ms
3484 KiB
01-05.txt
AC
158 ms
3588 KiB
01-06.txt
AC
206 ms
3608 KiB
01-07.txt
AC
307 ms
5240 KiB
02-01.txt
AC
387 ms
24860 KiB
02-02.txt
AC
383 ms
24804 KiB
02-03.txt
AC
408 ms
24704 KiB
03-01.txt
AC
246 ms
24840 KiB
03-02.txt
AC
243 ms
24800 KiB
03-03.txt
AC
238 ms
24856 KiB
03-04.txt
AC
408 ms
24800 KiB
03-05.txt
AC
406 ms
24880 KiB
04-01.txt
AC
97 ms
24800 KiB
04-02.txt
AC
36 ms
24804 KiB
05-01.txt
AC
95 ms
24936 KiB
05-02.txt
AC
100 ms
24844 KiB
05-03.txt
AC
92 ms
24836 KiB
05-04.txt
AC
101 ms
24744 KiB
05-05.txt
AC
150 ms
24776 KiB
05-06.txt
AC
128 ms
24788 KiB
sample-01.txt
AC
1 ms
3420 KiB