Submission #993517


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
#define int long long   // <-----!!!!!!!!!!!!!!!!!!!

#define rep(i,n) for (int i=0;i<(n);i++)
#define rep2(i,a,b) for (int i=(a);i<(b);i++)
#define rrep(i,n) for (int i=(n)-1;i>=0;i--)
#define rrep2(i,a,b) for (int i=(a)-1;i>=b;i--)
#define all(a) (a).begin(),(a).end()
#define rall(a) (a).rbegin(),(a).rend()
#define printV(_v) for(auto _x:_v){cout<<_x<<" ";}cout<<endl
#define printVS(_vs) for(auto _x : _vs){cout << _x << endl;}
#define printVV(_vv) for(auto _v:_vv){for(auto _x:_v){cout<<_x<<" ";}cout<<endl;} cout << endl;
#define printP(_p) cout << _p.first << " " << _p.second << endl
#define printVP(_vp) for(auto _p : _vp) printP(_p);

typedef long long ll;
typedef pair<int, int> Pii;
typedef tuple<int, int, int> TUPLE;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<vvi> vvvi;
typedef vector<Pii> vp;
const int inf = 1e9;
const int mod = 1e9 + 7;
typedef vvi Graph;

signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);

    int n, m;
    cin >> n >> m;
    vi x(n);
    rep(i, n) cin >> x[i];

    auto c = [](int l, int r) {
        // 奇数の方が先、どちらも偶数なら小さい方が先
        if (l % 2) return true;
        else if (r % 2) return false;
        else return l < r;
    };
    using PQ = priority_queue<int, vector<int>, decltype(c)>;
    // xをmodで分類
    vector<PQ> y(m, PQ(c));
    rep(i, n) {
        y[x[i] % m].push(x[i]);
    }

    int ans = y[0].size() / 2;
    if (m % 2 == 0) ans += y[m/2].size() / 2;
    rep2(i, 1, (m + 1) / 2) {
        while (!y[i].empty() && !y[m-i].empty()) {
            y[i].pop();
            y[m-i].pop();
            ans++;
        }
    }

    rep(i, m) {
        if (i == 0 || 2 * i == m) continue;
        map<int, int> mp;
        while (!y[i].empty()) {
            mp[y[i].top()]++;
            y[i].pop();
        }
        for (auto p : mp) {
            ans += p.second / 2;
        }
    }

    // rep(i, m) {
    //     cerr << i << ":";
    //     while (!y[i].empty()) {
    //         cerr << y[i].top() << " ";
    //         y[i].pop();
    //     }
    //     cerr << endl;
    // }

    cout << ans << endl;
}

Submission Info

Submission Time
Task D - Pair Cards
User yurahuna
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2285 Byte
Status WA
Exec Time 29 ms
Memory 7296 KB

Judge Result

Set Name sample all
Score / Max Score 0 / 0 0 / 700
Status
AC × 2
AC × 21
WA × 11
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
Case Name Status Exec Time Memory
01-01.txt AC 3 ms 256 KB
01-02.txt AC 16 ms 2168 KB
01-03.txt AC 17 ms 2012 KB
01-04.txt WA 21 ms 2236 KB
01-05.txt WA 19 ms 2044 KB
01-06.txt WA 22 ms 2304 KB
01-07.txt WA 21 ms 1920 KB
01-08.txt WA 21 ms 2304 KB
01-09.txt WA 21 ms 2304 KB
01-10.txt WA 25 ms 3968 KB
01-11.txt AC 29 ms 6272 KB
01-12.txt AC 23 ms 2168 KB
01-13.txt AC 20 ms 3576 KB
01-14.txt AC 17 ms 2012 KB
01-15.txt AC 21 ms 2036 KB
01-16.txt AC 21 ms 2432 KB
01-17.txt AC 20 ms 2176 KB
01-18.txt AC 21 ms 2816 KB
01-19.txt AC 21 ms 2688 KB
01-20.txt AC 26 ms 7296 KB
01-21.txt AC 17 ms 2000 KB
01-22.txt WA 21 ms 2176 KB
01-23.txt WA 21 ms 2176 KB
01-24.txt WA 21 ms 2304 KB
01-25.txt WA 22 ms 3328 KB
01-26.txt AC 25 ms 5504 KB
01-27.txt AC 18 ms 5376 KB
01-28.txt AC 7 ms 3456 KB
01-29.txt AC 4 ms 1536 KB
01-30.txt AC 7 ms 3328 KB
sample-01.txt AC 3 ms 256 KB
sample-02.txt AC 2 ms 256 KB