Submission #992941


Source Code Expand

#include<iostream>
#include<iomanip>
#include<map>
#include<unordered_map>
#include<set>
#include<unordered_set>
#include<vector>
#include<array>
#include<string>
#include<stack>
#include<queue>
#include<algorithm>
#include<cassert>
#include<functional>
#include<random>
#include<complex>
#include<bitset>
#include<chrono>
//#include<boost/multiprecision/cpp_int.hpp>
#define int int64_t
#define uint uint64_t
#define REP(i, a, b) for (int64_t i = (int64_t)(a); i < (int64_t)(b); i++)
#define rep(i, a) REP(i, 0, a)
#define EACH(i, a) for (auto i: a)
#define ITR(x, a) for (auto x = a.begin(); x != a.end(); x++)
#define ALL(a) (a.begin()), (a.end())
#define HAS(a, x) (a.find(x) != a.end())
#define Min(x) *min_element(ALL(x))
#define Max(x) *max_element(ALL(x))
#define Unique(L) (L.erase(unique(ALL(L)), L.end()))
#define veccat(v1, v2) std::copy((v2).begin(),(v2).end(),std::back_inserter(v1)/*v1の後ろにv2を入れる*/)
#define intmax (std::numeric_limits<int64_t>::max() / 4)
using namespace std;
//typedef boost::multiprecision::cpp_int bigint;
const double EPS = 1e-9;
const double PI = acos(-1.0);



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

	int N, M;
	cin >> N >> M;

	vector<int>card(100001);
	rep(i, N) {
		int X;
		cin >> X;
		card[X]++;
	}
	int ans = 0;

	vector<int>pair_modM(M);
	rep(i, 100001) {
		pair_modM[i%M] += card[i] / 2;
		ans += card[i] / 2;
		card[i] %= 2;
	}

	vector<int>card_modM(M);
	rep(i, 100001)if (card[i]) {
		card_modM[i%M]++;
	}
	
	ans += card_modM[0] / 2;
	card_modM[0] %= 2;
	if (M % 2 == 0) {
		ans += card_modM[M / 2] / 2;
		card_modM[M / 2] %= 2;
	}
	REP(i, 1, M) {
		if (M <= i * 2)break;
		const int mmm = min(card_modM[i], card_modM[M - i]);
		ans += mmm;
		card_modM[i] -= mmm;
		card_modM[M - i] -= mmm;
	}

	rep(i, M) {
		if (2 <= card_modM[i]) {
			if (pair_modM[M - i]) {
				const int mmm = min(pair_modM[M - i], card_modM[i] / 2);
				ans += mmm;
				pair_modM[M - i] -= mmm;
				card_modM[i] -= mmm * 2;

			}
		}
	}


	cout << ans << endl;
}

Submission Info

Submission Time
Task D - Pair Cards
User eukaryo
Language C++14 (GCC 5.4.1)
Score 700
Code Size 2115 Byte
Status AC
Exec Time 16 ms
Memory 2560 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 1024 KB
01-02.txt AC 14 ms 1024 KB
01-03.txt AC 14 ms 1024 KB
01-04.txt AC 14 ms 1024 KB
01-05.txt AC 14 ms 1024 KB
01-06.txt AC 14 ms 1024 KB
01-07.txt AC 14 ms 1024 KB
01-08.txt AC 14 ms 1024 KB
01-09.txt AC 14 ms 1024 KB
01-10.txt AC 15 ms 1664 KB
01-11.txt AC 16 ms 2560 KB
01-12.txt AC 13 ms 1024 KB
01-13.txt AC 14 ms 1792 KB
01-14.txt AC 14 ms 1024 KB
01-15.txt AC 14 ms 1024 KB
01-16.txt AC 14 ms 1024 KB
01-17.txt AC 14 ms 1024 KB
01-18.txt AC 14 ms 1152 KB
01-19.txt AC 15 ms 1280 KB
01-20.txt AC 16 ms 2560 KB
01-21.txt AC 13 ms 1024 KB
01-22.txt AC 13 ms 1024 KB
01-23.txt AC 13 ms 1024 KB
01-24.txt AC 13 ms 1024 KB
01-25.txt AC 14 ms 1536 KB
01-26.txt AC 15 ms 2560 KB
01-27.txt AC 12 ms 2560 KB
01-28.txt AC 8 ms 2560 KB
01-29.txt AC 6 ms 1664 KB
01-30.txt AC 7 ms 2560 KB
sample-01.txt AC 5 ms 1024 KB
sample-02.txt AC 5 ms 1024 KB