J. Parallelograms
time limit per test
2.0 smemory limit per test
256 MBinput
standard inputoutput
standard outputThere are n sticks, the i-th of which has length ai. Alex wants to assemble from them as many parallelograms as possible simultaneously, with each stick used at most in one parallelogram. What maximal number of parallelograms is it possible to assemble?
Input
The first line contains a single integer n (1 ≤ n ≤ 200000) — the number of sticks.
The second line contains n integers ai (1 ≤ ai ≤ 200000) — the lengths of sticks.
Output
Output a single integer — the maximal number of parallelograms that is possible to assemble.
Examples
input
Copy
4 1 2 1 2
output
1
input
Copy
12 1 3 5 7 1 3 5 7 1 3 5 7
output
2
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int a[200005];
int b[200005];
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int n;
cin>>n;
memset(b,0,sizeof(b));
for(int i=0;i<n;i++)
{
cin>>a[i];
b[a[i]]++;
}
sort(b,b+200000,cmp);
int k=0;
for(int i=0;i<=200000;i++)
{
if(b[i]>=2)
{
k+=b[i]/2;
}
}
cout<<k/2<<endl;
return 0;
}
题意就是给你n条边,让你计算出这些边最多能组成多少平行四边形:水过
AC 代码