Submission #993597


Source Code Expand

#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>

using namespace std;
typedef vector<int> VI;
typedef vector<VI> VII;
typedef map<int, int> MII;
typedef vector<MII> VMII;
typedef pair<int, int> PII;
typedef priority_queue<PII> PQPII;
typedef vector<PQPII> VPQPII;

#define MP make_pair

int main() {
  int N, M;
  cin >> N >> M;

  VMII xss(M);
  VPQPII pqs(M);

  for (int i = 0; i < N; i++) {
    int n;
    cin >> n;
    auto& m = xss[n%M];
    if (m.count(n)) {
      m[n]++;
    } else {
      m[n] = 1;
    }
  }

  for (int i = 0; i < M; i++) {
    auto& m = xss[i];
    for (auto it = m.begin(); it != m.end(); it++) {
      pqs[i].push(MP(it->second, it->first));
    }
  }

  VII yss(M);

  /*
  for (int i = 0; i < M; i++) {
    auto& m = pqs[i];
    cout << i;
    cout << ":";
    while (!m.empty()) {
      auto x = m.top(); m.pop();
      cout << x.first << "," << x.second;
      cout << "  ";
    }
    cout << endl;
  }
  */

  for (int i = 0; i < M; i++) {
    auto& m = pqs[i];
    while (!m.empty()) {
      auto x = m.top(); m.pop();
      for (int j = 0; j < x.first; j++) {
        yss[i].push_back(x.second);
      }
    }
  }

  /*
  for (int i = 0; i < M; i++) {
    for (auto x: yss[i]) {
      cout << x << " ";
    }
    cout << endl;
  }
  */

  int res = 0;
  for (int i = 0; i <= M/2; i++) {
    int j = (M-i)%M;
    auto& ys_i = yss[i];
    auto& ys_j = yss[j];

    if (i != j) {
      while (!ys_i.empty() && !ys_j.empty()) {
        ys_i.pop_back();
        ys_j.pop_back();
        res++;
      }
    } else {
      while (ys_i.size() >= 2) {
        ys_i.pop_back();
        ys_j.pop_back();
        res++;
      }
    }
  }


  for (int i = 0; i < M; i++) {
    const auto& ys_i = yss[i];
    for (int j = 0; j < ((int)ys_i.size())-1; j++) {
      //cout << j << " " << ys_i.size() << endl;
      if (ys_i[j] == ys_i[j+1]) {
        res++;
        j++;
      }
    }
  }

  cout << res << endl;


  return 0;
}

Submission Info

Submission Time
Task D - Pair Cards
User almizaar
Language C++14 (Clang 3.8.0)
Score 0
Code Size 2109 Byte
Status WA
Exec Time 140 ms
Memory 19072 KB

Judge Result

Set Name sample all
Score / Max Score 0 / 0 0 / 700
Status
AC × 2
AC × 22
WA × 10
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 126 ms 4476 KB
01-03.txt AC 125 ms 4340 KB
01-04.txt WA 125 ms 4332 KB
01-05.txt WA 123 ms 4224 KB
01-06.txt WA 121 ms 4224 KB
01-07.txt WA 120 ms 4224 KB
01-08.txt WA 112 ms 4480 KB
01-09.txt WA 111 ms 4608 KB
01-10.txt WA 107 ms 8832 KB
01-11.txt AC 117 ms 14976 KB
01-12.txt AC 80 ms 892 KB
01-13.txt AC 85 ms 4348 KB
01-14.txt AC 140 ms 6396 KB
01-15.txt AC 140 ms 6264 KB
01-16.txt AC 130 ms 6528 KB
01-17.txt AC 120 ms 6400 KB
01-18.txt AC 120 ms 7424 KB
01-19.txt AC 109 ms 7552 KB
01-20.txt AC 119 ms 19072 KB
01-21.txt AC 95 ms 1056 KB
01-22.txt WA 92 ms 1024 KB
01-23.txt WA 89 ms 1024 KB
01-24.txt WA 86 ms 1152 KB
01-25.txt AC 88 ms 3584 KB
01-26.txt AC 96 ms 8960 KB
01-27.txt AC 65 ms 13568 KB
01-28.txt AC 16 ms 8448 KB
01-29.txt AC 7 ms 3456 KB
01-30.txt AC 13 ms 8064 KB
sample-01.txt AC 3 ms 256 KB
sample-02.txt AC 3 ms 256 KB