【codeforces】Round #402 Div.2 A
2017-02-27 11:01
316 查看
题意:有A B两个组,各有n个人,每个人的分数为1---5,交换两组学生,使两组出现的数相等
统计每个数总共出现的次数,平分就是每个数在一组中应该出现的次数,分别遍历两组,统计每组多余的数的个数,取较小值
code:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
int n;
int a[110],b[110],num[6],num1[6],num2[6];
scanf("%d",&n);
memset(num,0,sizeof(num));
memset(num1,0,sizeof(num1));
memset(num2,0,sizeof(num2));
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
num[a[i]]++;
num1[a[i]]++;
}sort(a,a+n);
for(int i=0;i<n;i++){
scanf("%d",&b[i]);
num[b[i]]++;
num2[b[i]]++;
}sort(a,a+n);
int sum1=0,sum2=0;
int f=1;
for(int i=0;i<n;){
if(num[a[i]]%2==1){
f=0; break;
}
if(num1[a[i]]-num[a[i]]/2>0){
sum1+=num1[a[i]]-num[a[i]]/2;i+=num1[a[i]];
}
else i++;
}
for(int i=0;i<n;){
if(num[b[i]]%2==1){
f=0; break;}
if(num2[b[i]]-num[b[i]]/2>0){
sum2+=num2[b[i]]-num[b[i]]/2;i+=num2[b[i]];
}else i++;
}
if(f==0)
printf("-1\n");
else printf("%d\n",min(sum1,sum2));
return 0;
}
相关文章推荐
- 【codeforces】Round #402 Div.2 D
- codeforces Div.2 B.Suffix Structures
- [Codeforces] #441 div.2
- codeforces Div.2 899B Months and Years
- Codeforces Rcc 2014 warmup (div.2)
- codeforces Div.2 899C Dividing the numbers
- [Codeforces] Round #425 Div.2 B. Petya and Exam
- Codeforces Round #369 (div.2) 即 Codeforces 711
- codeforces 224 div.2 A. Ksenia and Pan Scales
- codeforces 832c #425 DIV.2
- codeforces 306 div.2 B. Preparing Olympiad
- codeforces 427 div.2 F. Roads in the Kingdom
- 【codefoces】Round #402 Div.2 B
- [Codeforces] #432 div.2 (Virtual)
- Codeforces 877(442 Div.2) B. Nikita and string
- Codeforces 507D (Round #287(div.2))D. The Maths Lecture【数位DP】
- 2016 Personal Training #7 Div.2 CodeForces 589A Email Aliases
- Codeforces 834(426 Div.2) C.The Meaningless Game
- Codeforces Div.2 212 C Insertion Sort (DP)
- codeforces_#243 (Div.2)