问题 J: 火柴

问题 J: 火柴

时间限制: 1 Sec  内存限制: 128 MB
提交 状态

题目描述

有N根火柴,第i根火柴的长度是Li。小明很喜欢正方形,所以小明希望用这些火柴拼出尽量多的正方形,但要同时满足如下条件:
1、一根火柴最多只能用在一个正方形中。
2、组成正方形的四根火柴,长度必须都相同。
给出N根火柴的长度,你的任务是计算:最多可以拼出多少个正方形?
 

输入

第一行,一个整数N。  
第二行,N个整数,第i个整数是Li。
 

输出

一个整数,表示最多能拼出的正方形的数量

样例输入 Copy

7
1  1  2  2  1  1  2 

样例输出 Copy

1

提示

只能拼出1个正方形,正方形的边长是1。

对于60%的数据, 4 <= N <= 50, 1 <= Li <= 1000。
对于100的数据,4 <= N <= 5000,1 <= Li <= 1000000000。   
 
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     long long int a[5005],i,j,n,s=0,count,b[5005];
 6     scanf("%d",&n);
 7     for(i=0;i<n;i++)
 8     {
 9         scanf("%d",&a[i]);
10         b[i]=a[i];
11     }    
12     sort(b,b+n);
13     long long int m=0,k=1;
14     while(k<n)
15     {
16         if(b[k]!=b[m]) b[++m]=b[k];
17         k++;
18     }  //去重  
19     for(i=0;i<m+1;i++)
20     {    count=0;
21         for(j=0;j<n;j++)
22         {
23             if(b[i]==a[j]) count++;
24         }
25         s=count/4+s;
26     }
27     printf("%d",s);
28     return 0;
29     
30 }

 

 
posted @ 2020-11-12 22:57  瑜瑜子  阅读(741)  评论(0)    收藏  举报