Submission #992240


Source Code Expand

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define fbo find_by_order
#define ook order_of_key

typedef long long ll;
typedef pair<ll,ll> ii;
typedef vector<int> vi;
typedef long double ld; 
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;
typedef set<int>::iterator sit;
typedef map<int,int>::iterator mit;
typedef vector<int>::iterator vit;

int n,m;
map<int,int> cnt[100001];
vi vec[100001];

int main()
{
	ios_base::sync_with_stdio(0); cin.tie(0);
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		int x; cin >> x;
		cnt[x%m][x]++;
	}
	for(int i = 0; i < m; i++)
	{
		for(mit it = cnt[i].begin(); it != cnt[i].end(); it++)
		{
			vec[i].pb(it->se);
		}
	}
	int ans = 0;
	for(int i = 0; 2*i <= m; i++)
	{
		if(i==0||i==m-i)
		{
			int sum=0;
			for(int j = 0; j < vec[i].size(); j++)
			{
				sum+=vec[i][j];
			}
			ans+=sum/2;
		}
		else
		{
			int clr1 = 0;
			int clr2 = 0;
			int sum1 = 0;
			int sum2 = 0;
			for(int j = 0; j < vec[i].size(); j++)
			{
				sum1 += vec[i][j];
				clr1 += (vec[i][j]/2);
			}
			for(int j = 0; j < vec[m-i].size(); j++)
			{
				sum2 += vec[m-i][j];
				clr2 += (vec[m-i][j]/2);
			}
			if(sum1>=sum2)
			{
				int mindel = min(clr1, (sum1-sum2)/2);
				sum1 -= 2*mindel;
				ans += min(sum1,sum2) + mindel;
			}
			else
			{
				int mindel = min(clr2, (sum2-sum1)/2);
				sum2 -= 2*mindel;
				ans += min(sum1,sum2) + mindel;
			}
		}
	}
	cout<<ans<<'\n';
}

Submission Info

Submission Time
Task D - Pair Cards
User zscoder
Language C++14 (GCC 5.4.1)
Score 700
Code Size 1708 Byte
Status AC
Exec Time 55 ms
Memory 15104 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 8 ms 7296 KB
01-02.txt AC 46 ms 10624 KB
01-03.txt AC 45 ms 10624 KB
01-04.txt AC 45 ms 10624 KB
01-05.txt AC 46 ms 10624 KB
01-06.txt AC 45 ms 10624 KB
01-07.txt AC 45 ms 10624 KB
01-08.txt AC 42 ms 10496 KB
01-09.txt AC 39 ms 10624 KB
01-10.txt AC 33 ms 11392 KB
01-11.txt AC 32 ms 12288 KB
01-12.txt AC 18 ms 7296 KB
01-13.txt AC 18 ms 7296 KB
01-14.txt AC 55 ms 12544 KB
01-15.txt AC 53 ms 12544 KB
01-16.txt AC 51 ms 12544 KB
01-17.txt AC 48 ms 12416 KB
01-18.txt AC 44 ms 12800 KB
01-19.txt AC 39 ms 12544 KB
01-20.txt AC 35 ms 15104 KB
01-21.txt AC 25 ms 7552 KB
01-22.txt AC 24 ms 7552 KB
01-23.txt AC 23 ms 7552 KB
01-24.txt AC 20 ms 7552 KB
01-25.txt AC 19 ms 7552 KB
01-26.txt AC 20 ms 7552 KB
01-27.txt AC 23 ms 11136 KB
01-28.txt AC 9 ms 7552 KB
01-29.txt AC 8 ms 7296 KB
01-30.txt AC 9 ms 7296 KB
sample-01.txt AC 9 ms 7296 KB
sample-02.txt AC 9 ms 7296 KB