本文主要是介绍Codeforces 158B,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
很久没有刷题了,刚刚有小学弟问了这道题,AC之后贴上来吧。水~~~
#include <cstdio>
#include <cmath>
int main() {
int n;
while(scanf("%d", &n) != EOF) {
int a = 0, b = 0, c = 0, d = 0;
int arr[100001];
for (int i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
if(arr[i] == 1) {
a++;
} else if(arr[i] == 2) {
b++;
} else if(arr[i] == 3) {
c++;
} else {
d++;
}
}
int sum = d + c;
a = (a > c) ? (a - c) : 0;
sum += b / 2;
if (b % 2) {
a = (a > 2) ? (a - 2) : 0;
sum++;
}
sum += a / 4;
if(a % 4) {
sum++;
}
printf("%d\n", sum);
}
return 0;
}
再贴一下小学弟的,看这代码膝盖也是一阵疼.......
#include <stdio.h>
#include <string.h>int main()
{int i,f[100001],n;while(scanf("%d",&n)!=EOF){int a=0,b=0,c=0,d=0;for(i=0;i<n;i++){scanf("%d",&f[i]);if(f[i]==1) d++;else if(f[i]==2) c++;else if(f[i]==3) b++;else a++;}if(b>=d){c==0? printf("%d",a+b):printf("%d",a+b+(c-1)/2+1);}else{if((d-b)%2==0){if((d-b)/2>c){printf("%d",a+b+c+((d-b)/2-c-1)/2+1);}else if((d-b)/2==c){printf("%d",a+b+c);}else{printf("%d",a+b+(d-b)/2+(c-(d-b)/2-1)/2+1);}}else{if((c+(d-b)/2)%2==0){printf("%d",a+b+(c+(d-b)/2)/2+1);}else{printf("%d",a+b+(c+(d-b)/2+1)/2);}}}printf("\n");}return 0;
}
这篇关于Codeforces 158B的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!