Submission #994332


Source Code Expand

#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
#include <set>

#define REP(i,k,n) for(int i=k;i<n;i++)
#define rep(i,n) for(int i=0;i<n;i++)
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++)
#define INF 1<<30
#define mp make_pair

using namespace std;
typedef long long ll;
typedef pair<int,int> P;

int main() {
	int n, m;
	cin >> n >> m;

	vector<int> v(n);
	rep(i, n) cin >> v[i];
	sort(v.begin(), v.end());

	map<int, int> ma;
	rep(i, n) {
		ma[v[i]]++;
	}

	priority_queue<P, vector<P>, greater<P> > que[100005];
	each(it, ma) {
		int mm = it->first % m;
		que[mm].push(mp(it->second, it->first));
		// cout << it->first << " " << it-> second << " m;" << mm << endl;;
	}

	int ans = 0;
	REP(i, 1, m / 2 + (m % 2 != 0)) { //0は例外
		int j = m - i;

		// cout << "----------in for:" << i << " " << j << endl;

		while(que[i].size() && que[j].size()) {
			P p1 = que[i].top(); que[i].pop();
			P p2 = que[j].top(); que[j].pop();

			// cout << "p1:" << p1.first << " " << p1.second << endl;
			// cout << "p2:" << p2.first << " " << p2.second << endl;

			if(p1.first >= p2.first) {
				ans += p2.first;
				ma[p1.second] -= p2.first;
				ma[p2.second] -= p2.first;

				p1.first -= p2.first;
				p2.first = 0;

				if(p1.first > 0) {
					que[i].push(mp(p1.first, p1.second));
					// cout << " -- update:" << p1.first << " " << p1.second << endl;
				}
			} else {
				ans += p1.first;
				ma[p1.second] -= p1.first;
				ma[p2.second] -= p1.first;

				p2.first -= p1.first;
				p1.first = 0;

				if(p2.first > 0) {
					que[j].push(mp(p2.first, p2.second));
					// cout << " -- update:" << p2.first << " " << p2.second << endl;
				}
			}
		}
	}

	int sum = 0;
	while(que[0].size()) {
		P p = que[0].top(); que[0].pop();
		sum += p.first;
		ma[p.second] = 0;
	}

	ans += sum / 2;

	each(it, ma) {
		// cout << "end:" << it->first << " " << it->second << endl;
		if(it->second >= 2) {
			ans += it->second / 2;
		}
	}

	cout << ans << endl;

	return 0;
}

Submission Info

Submission Time
Task D - Pair Cards
User Ry0u_
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2196 Byte
Status WA
Exec Time 93 ms
Memory 11520 KB

Judge Result

Set Name sample all
Score / Max Score 0 / 0 0 / 700
Status
AC × 2
AC × 18
WA × 14
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 3328 KB
01-02.txt AC 71 ms 7424 KB
01-03.txt WA 66 ms 7372 KB
01-04.txt WA 75 ms 7424 KB
01-05.txt WA 70 ms 7296 KB
01-06.txt WA 77 ms 7424 KB
01-07.txt WA 77 ms 7424 KB
01-08.txt WA 79 ms 7424 KB
01-09.txt WA 78 ms 7552 KB
01-10.txt WA 70 ms 8064 KB
01-11.txt AC 71 ms 8704 KB
01-12.txt AC 35 ms 3712 KB
01-13.txt AC 35 ms 3712 KB
01-14.txt WA 77 ms 9468 KB
01-15.txt AC 87 ms 9472 KB
01-16.txt WA 90 ms 9728 KB
01-17.txt AC 93 ms 9472 KB
01-18.txt AC 90 ms 9984 KB
01-19.txt AC 86 ms 9600 KB
01-20.txt AC 87 ms 11520 KB
01-21.txt WA 41 ms 3968 KB
01-22.txt WA 42 ms 3968 KB
01-23.txt WA 42 ms 3968 KB
01-24.txt WA 41 ms 3968 KB
01-25.txt AC 41 ms 4096 KB
01-26.txt AC 41 ms 4096 KB
01-27.txt AC 36 ms 7424 KB
01-28.txt AC 8 ms 3584 KB
01-29.txt AC 6 ms 3456 KB
01-30.txt AC 6 ms 3328 KB
sample-01.txt AC 6 ms 3328 KB
sample-02.txt AC 6 ms 3328 KB