A27695. 分数线 (score.cpp)
填空题
中等
知识点
题目描述
分数线 (score.cpp)
题目描述
一次比赛中,所有参加比赛的选手都获得了一个分 。已知有 C1 个同学得 1 分, C2个同学得 2分,...., cm 个同学得 m 分,请你划定一个分线 k,使得不低于分线 k 的人数 n1和低于分数线 k 的人数n2 均在给定的 个范围[ t,y] 之内,即x=<n1 <=y,x= <n2 <=y。保证s和k一定是整数,且1 =< s < =m,1=<k <= m。
输入格式
第一行仅有一个正整数 m;第二行包含 m 个整数 C1,C2,...,Cm,两两之间以空格分隔,数据保证至少有一个 ci大于 0 :第三行包含两个用空格分隔的整数 x 和 y。
输出格式
如果不存在满足条件的分数线,输出 0 。否则,输出一个分符合题目要求的分数线。如果有多个答案,输出符合条件的答案中最小的那一个。


参考答案
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[200010], sum[200010];
int main()
{
ll m, x, y;
cin >> m;
for(ll i = 1;i <= m;i++)
{
cin >> a[i];
sum[i] = sum[i - 1] + a[i];
}
cin >> x >> y;
for(ll i = 1;i <= m;i++)
{
ll cnt1 = 0, cnt2 = 0;
cnt1 = sum[i - 1];
cnt2 = sum[m] - sum[i - 1];
if(cnt1 >= x && cnt1 <= y && cnt2 >= x && cnt2 <= y)
{
cout << i;
return 0;
}
}
cout << 0;
return 0;
}
上一题
下一题