RT
题目描述
小明有n张珍贵的卡片。每张卡片用整数表示它的类别,同一个类别可能有多张卡片。
对于类别为p的卡片,且p≠0,那么p可以和−p组成一套卡片。对于类别为0的卡片,可以和任意类别的卡片组成一套卡片。每张卡片至多只能和一张卡片组成一套卡片。
请问,小明最多可以组成多少套卡片?
题目输入 第一行一个n,表示卡片的张数。
第二行是n个整数,Ai表示第i张卡片的类别。
题目输出 输出一个整数,表示最多可以组成多少套卡片。
样例输入1
4
1 -1 2 0
样例输出1
2
样例输入2
6
1 2 3 3 0 0
样例输出2
2
样例输入3
5
0 0 0 0 0
样例输出3
2 蒟蒻的代码
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 100005;
int arr[MAXN];
int main() {
int n,ans=0;
cin >> n;
if (n == 0) {
cout << 0 << endl;
return 0;
}
for (int i = 0; i < n; i++) {
int value;
cin >> value;
arr[value + MAXN / 2]++;
}
for (int i = 1; i < MAXN; i++) {
if (i == MAXN / 2) {
ans += arr[i] / 2;
} else {
ans += min(arr[i], arr[MAXN - i]);
}
}
cout << ans << endl;
return 0;
}
//一直过不了第一个样例