Submission #5774350


Source Code Expand

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

using ll = long long;
#define FOR(i, m, n) for (int i = (m); i < (n); i++)
#define REP(i, n) FOR(i, 0, n)
#define ALL(c) (c).begin(), (c).end()
template<class T> inline bool chmin(T& a, T b) {if (a > b) {a = b; return true;} return false;}
template<class T> inline bool chmax(T& a, T b) {if (a < b) {a = b; return true;} return false;}
const int MOD = 1000000007;

int main() {
    int n, m;
    cin >> n >> m;

    vector<vector<int>> x(m, vector<int>());
    int y;
    REP(i, n) {
        cin >> y; 
        x[y % m].push_back(y);
    }

    int c = 0;
    // mod m == 0
    c += x[0].size() / 2;
    // mod m == just m/2
    if (m % 2 == 0) {
        c += x[m / 2].size() / 2;
    }

    FOR(i, 1, m / 2 + 1) {
        if (m % 2 == 0 && i == m / 2) {
            continue;
        }
        if (x[i].size() == x[m - i].size()) {
            c += x[i].size();
            continue;
        }
        vector<int> large;
        vector<int> small;
        if (x[i].size() < x[m - i].size()) {
            large = x[m - i];
            small = x[i];
        } else {
            small = x[m - i];
            large = x[i];
        }
        c += small.size();
        sort(ALL(large));
        int d = 0;
        int l = (large.size() - small.size()) / 2;
        int prev = -1;
        for (const int z : large) {
            if (prev == z) {
                d++;
                prev = -1;
            } else {
                prev = z;
            }
            if (l == d) {
                break;
            }
        }
        c += d;
    }

    cout << c << endl;
}

Submission Info

Submission Time
Task D - Pair Cards
User mdstoy
Language C++14 (GCC 5.4.1)
Score 700
Code Size 1689 Byte
Status AC
Exec Time 41 ms
Memory 5760 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 29 ms 892 KB
01-03.txt AC 29 ms 892 KB
01-04.txt AC 32 ms 1016 KB
01-05.txt AC 31 ms 1024 KB
01-06.txt AC 32 ms 896 KB
01-07.txt AC 31 ms 768 KB
01-08.txt AC 31 ms 896 KB
01-09.txt AC 34 ms 896 KB
01-10.txt AC 40 ms 2432 KB
01-11.txt AC 41 ms 4608 KB
01-12.txt AC 31 ms 1144 KB
01-13.txt AC 32 ms 2168 KB
01-14.txt AC 29 ms 788 KB
01-15.txt AC 30 ms 896 KB
01-16.txt AC 31 ms 1024 KB
01-17.txt AC 31 ms 768 KB
01-18.txt AC 32 ms 1152 KB
01-19.txt AC 35 ms 1280 KB
01-20.txt AC 37 ms 5760 KB
01-21.txt AC 29 ms 768 KB
01-22.txt AC 31 ms 768 KB
01-23.txt AC 31 ms 896 KB
01-24.txt AC 31 ms 896 KB
01-25.txt AC 33 ms 1664 KB
01-26.txt AC 34 ms 3328 KB
01-27.txt AC 22 ms 4096 KB
01-28.txt AC 4 ms 2688 KB
01-29.txt AC 2 ms 1152 KB
01-30.txt AC 2 ms 2560 KB
sample-01.txt AC 1 ms 256 KB
sample-02.txt AC 1 ms 256 KB