Submission #7939482


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

#define rep(i, j) for (int i = 0; i < j; i++)
#define all(obj) (obj).begin(), (obj).end()
#define rall(obj) (obj).rbegin(), (obj).rend()
typedef long long int ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<vi> vvi;
typedef vector<pii> vpii;

int main() {

    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.precision(10);
    cout << fixed;

    int n, m;
    cin >> n >> m;

    map<int, int> mp;
    rep(i, n) {
        int x;
        cin >> x;
        mp[x]++;
    }

    map<int, int> mpe, mpo;
    for (auto& p: mp) {
        mpe[p.first % m] += p.second - p.second % 2;
        if (p.second % 2 > 0) mpo[p.first % m]++;
    }

    ll ans = mpo[0] / 2 + mpe[0] / 2;
    if (m % 2 == 0) {
        ans += mpo[m / 2] / 2 + mpe[m / 2] / 2;
    }

    for (int i = 1; i <= (m - 1) / 2; i++) {
        if (mpo[i] > mpo[m - i]) {
            int x = min(mpe[m - i], mpo[i] - mpo[m - i]);
            ans += mpo[m - i] + x;
            mpe[m - i] -= x;
        } else {
            int x = min(mpe[i], mpo[m - i] - mpo[i]);
            ans += mpo[i] + x;
            mpe[i] -= x;
        }
    }

    for (int i = 1; i < m; i++) {  
        if (m % 2 == 0 and i == m / 2) continue;
    // rep(i, m) {
        // cout << i << " " << mpe[i] << endl;
        ans += mpe[i] / 2;
    }

    cout << ans << endl;
    return 0;
}

Submission Info

Submission Time
Task D - Pair Cards
User kazuhitot
Language C++14 (GCC 5.4.1)
Score 700
Code Size 1485 Byte
Status AC
Exec Time 159 ms
Memory 14336 KB

Judge Result

Set Name sample all
Score / Max Score 0 / 0 700 / 700
Status
AC × 2
AC × 34
Set Name Test Cases
sample sample-01.txt, sample-02.txt
all sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt, sample-01.txt, sample-02.txt
Case Name Status Exec Time Memory
01-01.txt AC 1 ms 256 KB
01-02.txt AC 38 ms 3200 KB
01-03.txt AC 38 ms 3200 KB
01-04.txt AC 39 ms 3200 KB
01-05.txt AC 39 ms 3200 KB
01-06.txt AC 39 ms 3200 KB
01-07.txt AC 40 ms 3200 KB
01-08.txt AC 45 ms 3328 KB
01-09.txt AC 46 ms 3456 KB
01-10.txt AC 63 ms 7040 KB
01-11.txt AC 88 ms 12544 KB
01-12.txt AC 9 ms 256 KB
01-13.txt AC 30 ms 4352 KB
01-14.txt AC 45 ms 4992 KB
01-15.txt AC 46 ms 4992 KB
01-16.txt AC 51 ms 4992 KB
01-17.txt AC 57 ms 4992 KB
01-18.txt AC 60 ms 5248 KB
01-19.txt AC 66 ms 6144 KB
01-20.txt AC 159 ms 14336 KB
01-21.txt AC 18 ms 384 KB
01-22.txt AC 18 ms 512 KB
01-23.txt AC 19 ms 512 KB
01-24.txt AC 19 ms 512 KB
01-25.txt AC 32 ms 3328 KB
01-26.txt AC 67 ms 9856 KB
01-27.txt AC 112 ms 12032 KB
01-28.txt AC 51 ms 9728 KB
01-29.txt AC 18 ms 3968 KB
01-30.txt AC 51 ms 9600 KB
sample-01.txt AC 1 ms 256 KB
sample-02.txt AC 1 ms 256 KB