2 条题解

  • 0
    @ 2022-11-5 17:54:25

    开心的人数

    大致题意:一堆学生挨个进入教室,如果当前教室里面的人当中,分数比他小的人数>=分数比他大的人数,那么她就是开心的。(感觉不符合三好学生、四好少年的基本自我要求)

    思路:采用计数排序,从他的分数开始在数组里扫两遍(从前到他的分数,从末尾到他的分数),比他小的总和人数如果大于比他大的总和人数,那么sum增加,最后输出sum。

    上代码

    #include<bits/stdc++.h>
    using namespace std;
    int js[110],n,sum,maxx;
    bool pd(int x)
    {
    	int sum1=0,sum2=0;
    	for(int i=1;i<x;i++)
    		sum1+=js[i];  //扫一遍比他小的 
    	for(int i=101;i>x;i--)
    		sum2+=js[i];  //扫一遍比他大的 
    	if(sum1>=sum2) return 1;
    	else return 0;
    }
    int main()
    {
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	{
    		int ls;
    		cin>>ls;  //读入当前这个人 
    		js[ls]++;  //计数 
    		if(pd(ls)==1)  //判断是否开心 
    			sum++;
    	}
    	cout<<sum;
    	return 0;
    }
    

    信息

    ID
    1125
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    76
    已通过
    21
    上传者