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
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
AC × 1
AC × 23
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