题目链接:
https://pintia.cn/problem-sets/994805260223102976/problems/994805273284165632
AC代码:
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int main()
{
int N;//住房总套数
double e;//低电量阈值
int D;//观察期阈值
scanf("%d%lf%d",&N,&e,&D);
int likely_vacant=0,vacant=0;
double t=N;
while(N--){
int K,sum1=0;
double a;
scanf("%d",&K);
for(int i=0;i<K;i++){
scanf("%lf",&a);
if(a<e){
//计算总数,本来我想用数组存储,
//然后排序,找到中间值与e比较,但是,没有这种方法节省空间
sum1++;
}
}
if(sum1>K/2&&K>D){
vacant++;
}
else if(sum1>K/2&&K<=D){
likely_vacant++;
}
}
// cout<<likely_vacant<<" "<<vacant<<endl;
// double t=N; N=0,这已经不是第一次犯这错误了
// double rate_1=0,rate_2=0;//避免产生误差,计算结果不用赋值,而是直接输出
// rate_1=(likely_vacant/t)*100.0;
// rate_2=(vacant/t)*100.0;
printf("%.1lf%% %.1lf%%",(likely_vacant/t)*100.0,(vacant/t)*100.0);
return 0;
}