Submission #992241


Source Code Expand

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<set>
#include<map>
#include<queue>
#include<cassert>
#define PB push_back
#define MP make_pair
#define sz(v) (in((v).size()))
#define forn(i,n) for(in i=0;i<(n);++i)
#define forv(i,v) forn(i,sz(v))
#define fors(i,s) for(auto i=(s).begin();i!=(s).end();++i)
#define all(v) (v).begin(),(v).end()
using namespace std;
typedef long long in;
typedef vector<in> VI;
typedef vector<VI> VVI;
vector<set<in> > cc;
map<in,in> cnt;
VI ttc;
int main(){
  ios::sync_with_stdio(0);
  cin.tie(0);
  in n,m,x;
  cin>>n>>m;
  cc.resize(m);
  ttc.resize(m);
  forn(z,n){
    cin>>x;
    cc[x%m].insert(x);
    ++ttc[x%m];
    ++cnt[x];
  }
  VI bd={0};
  if(m%2==0)
    bd.PB(m/2);
  in sm=0;
  forv(i,bd){
    sm+=ttc[bd[i]]/2;
  }
  for(in i=1;i<(m-i);++i){
    auto a=cc[i].begin();
    auto b=cc[m-i].begin();
    while(a!=cc[i].end() && b!=cc[m-i].end()){
      if(cnt[*a]%2==0){
	++a;
	continue;
      }
      if(cnt[*b]%2==0){
	++b;
	continue;
      }
      ++sm;
      --cnt[*a];
      --cnt[*b];
    }
    in loa=0;
    in lob=0;
    while(a!=cc[i].end()){
      loa+=cnt[*a]%2;
      ++a;
    }
    while(b!=cc[m-i].end()){
      lob+=cnt[*b]%2;
      ++b;
    }
    in ttla=0;
    in ttlb=0;
    fors(it,cc[i])
      ttla+=(cnt[*it]-cnt[*it]%2);
    fors(it,cc[m-i])
      ttlb+=(cnt[*it]-cnt[*it]%2);
    loa-=loa%2;
    lob-=lob%2;
    in c=min(loa,ttlb);
    ttlb-=c;
    sm+=c;
    c=min(lob,ttla);
    ttla-=c;
    sm+=c;
    sm+=ttla/2;
    sm+=ttlb/2;
  }
  cout<<sm<<endl;
  return 0;
}

Submission Info

Submission Time
Task D - Pair Cards
User w4yneb0t
Language C++14 (GCC 5.4.1)
Score 700
Code Size 1640 Byte
Status AC
Exec Time 183 ms
Memory 16640 KB

Judge Result

Set Name sample all
Score / Max Score 0 / 0 700 / 700
Status
AC × 2
AC × 32
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 69 ms 7168 KB
01-03.txt AC 74 ms 7168 KB
01-04.txt AC 91 ms 7168 KB
01-05.txt AC 90 ms 7168 KB
01-06.txt AC 103 ms 7168 KB
01-07.txt AC 106 ms 7296 KB
01-08.txt AC 106 ms 7168 KB
01-09.txt AC 104 ms 7296 KB
01-10.txt AC 75 ms 9344 KB
01-11.txt AC 75 ms 12672 KB
01-12.txt AC 11 ms 256 KB
01-13.txt AC 15 ms 2688 KB
01-14.txt AC 95 ms 11136 KB
01-15.txt AC 140 ms 11136 KB
01-16.txt AC 183 ms 11264 KB
01-17.txt AC 171 ms 11264 KB
01-18.txt AC 156 ms 11392 KB
01-19.txt AC 138 ms 11904 KB
01-20.txt AC 124 ms 16640 KB
01-21.txt AC 33 ms 640 KB
01-22.txt AC 33 ms 640 KB
01-23.txt AC 31 ms 640 KB
01-24.txt AC 27 ms 768 KB
01-25.txt AC 26 ms 2304 KB
01-26.txt AC 30 ms 6144 KB
01-27.txt AC 47 ms 11136 KB
01-28.txt AC 12 ms 6144 KB
01-29.txt AC 6 ms 2432 KB
01-30.txt AC 9 ms 5760 KB
sample-01.txt AC 3 ms 256 KB
sample-02.txt AC 3 ms 256 KB