Submission #994882


Source Code Expand

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

#define fi first
#define se second
#define repl(i,a,b) for(int i=(int)(a);i<(int)(b);i++)
#define rep(i,n) repl(i,0,n)
#define each(itr,v) for(auto itr:v)
#define pb(s) push_back(s)
#define mp(a,b) make_pair(a,b)
#define all(x) (x).begin(),(x).end()
#define dbg(x) cout<<#x"="<<x<<endl
#define maxch(x,y) x=max(x,y)
#define minch(x,y) x=min(x,y)
#define uni(x) x.erase(unique(all(x)),x.end())
#define exist(x,y) (find(all(x),y)!=x.end())
#define bcnt(x) bitset<32>(x).count()

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> P;
typedef pair<P, int> PPI;
typedef pair<ll, ll> PL;
typedef pair<P, ll> PPL;

#define INF INT_MAX/3

#define MAX_N 1000

ll n,m;
ll cnt[111111];
vector<ll> mod[111111];
bool used[111111];

int main(){
	cin.sync_with_stdio(false);
	cin>>n>>m;
	rep(i,n){
		ll x;
		cin>>x;
		mod[x%m].pb(x);
		cnt[x]++;
	}
	rep(i,m){
		sort(all(mod[i]));
	}
	ll res=mod[0].size()/2;
	repl(i,1,m/2+1){
		ll add;
		if(i!=m-i)add=min(mod[i].size(),mod[m-i].size());
		else{
			res+=mod[i].size()/2;
			continue;
		}
		res+=add;
		ll pnum=0,bnum=0;
		rep(j,mod[i].size()){
			if(used[mod[i][j]])continue;
			used[mod[i][j]]=true;
			pnum+=cnt[mod[i][j]]/2;
			bnum+=cnt[mod[i][j]]%2;
		}
		if(add-bnum>0){
			res+=max(0LL,(pnum*2-(add-bnum))/2);
		}else{
			res+=pnum;
		}
		if(i!=m-i){
			pnum=0,bnum=0;
			rep(j,mod[m-i].size()){
				if(used[mod[m-i][j]])continue;
				used[mod[m-i][j]]=true;
				pnum+=cnt[mod[m-i][j]]/2;
				bnum+=cnt[mod[m-i][j]]%2;
			}
			if(add-bnum>0){
				res+=max(0LL,(pnum*2-(add-bnum))/2);
			}else{
				res+=pnum;
			}
		}
	}
	cout<<res<<endl;
	return 0;
}

Submission Info

Submission Time
Task D - Pair Cards
User yamad
Language C++14 (GCC 5.4.1)
Score 700
Code Size 1753 Byte
Status AC
Exec Time 27 ms
Memory 6912 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 5 ms 2816 KB
01-02.txt AC 23 ms 4856 KB
01-03.txt AC 23 ms 4580 KB
01-04.txt AC 24 ms 4796 KB
01-05.txt AC 23 ms 4672 KB
01-06.txt AC 22 ms 5120 KB
01-07.txt AC 21 ms 4736 KB
01-08.txt AC 20 ms 4992 KB
01-09.txt AC 22 ms 4992 KB
01-10.txt AC 26 ms 5504 KB
01-11.txt AC 27 ms 5888 KB
01-12.txt AC 18 ms 4088 KB
01-13.txt AC 17 ms 4088 KB
01-14.txt AC 25 ms 4580 KB
01-15.txt AC 23 ms 4724 KB
01-16.txt AC 22 ms 5120 KB
01-17.txt AC 21 ms 4864 KB
01-18.txt AC 23 ms 5376 KB
01-19.txt AC 24 ms 4992 KB
01-20.txt AC 27 ms 6912 KB
01-21.txt AC 22 ms 4560 KB
01-22.txt AC 21 ms 4864 KB
01-23.txt AC 20 ms 4864 KB
01-24.txt AC 20 ms 4992 KB
01-25.txt AC 21 ms 5120 KB
01-26.txt AC 22 ms 5120 KB
01-27.txt AC 14 ms 4864 KB
01-28.txt AC 6 ms 3840 KB
01-29.txt AC 6 ms 3712 KB
01-30.txt AC 5 ms 3072 KB
sample-01.txt AC 5 ms 2816 KB
sample-02.txt AC 5 ms 2816 KB