Codeforces 158B

来源:互联网 发布:邪恶镰刀 数据 编辑:程序博客网 时间:2024/06/05 19:40

  很久没有刷题了,刚刚有小学弟问了这道题,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;}


0 0
原创粉丝点击