第7题 火柴 (GCOI2015五4) 查看测评数据信息 有N根火柴,第i根火柴的长度是Li。小明很喜欢正方形,所以小明希望用这些火柴拼出尽量多的正方形,但要同时满足如下条件:
1、一根火柴最多只能用在一个正方形中。
2、组成正方形的四根火柴,长度必须都相同。
给出N根火柴的长度,你的任务是计算:最多可以拼出多少个正方形?
输入格式 第一行,一个整数N。 第二行,N个整数,第i个整数是Li。
输出格式 一个整数,表示最多能拼出的正方形的数量
输入/输出例子1 输入:
7 1 1 2 2 1 1 2
输出:
1
输入/输出例子2 输入:
20 1 2 3 4 1 2 3 4 1 2 3 1 2 3 4 1 2 3 3 3
输出:
3
样例解释 样例1解释:只能拼出1个正方形,正方形的边长是1。样例2解释:能拼出3个正方形,正方形的边长是1、2、3。
【数据规模】 对于60%的数据, 4 <= N <= 50, 1 <= Li <= 1000。 对于100的数据,4 <= N <= 5000,1 <= Li <= 1000000000
#include<bits/stdc++.h>
using namespace std;
int n,x,a[10000005],b[10000000],sum;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x;
if(x<=10000000) a[x]++;
else b[x-10000000]++;
}
for(int i=1;i<=10000000;i++)
{
sum+=a[i]/4;
}
for(int i=1;i<=100000;i++)
sum+=b[i]/4;
cout<<sum;
return 0;
}
请帮我改一下