题解:B4192 [2023 海淀区小学组] 分数线

· · 题解

解析

前缀和解题。

通过前缀和求出分数小于 i 的人数。接着枚举每一个分数线,若在范围内,则输出并结束程序。若没有答案,则输出零。

CODE

#include<bits/stdc++.h>
//by Dashzhanghanxu
using namespace std;
#define ll long long
#define int long long
int c[100001],qz[100001];
signed main(){
    int m;
    cin>>m;
    for(int i=1;i<=m;++i){
    cin>>c[i];
    qz[i]=qz[i-1]+c[i];
    }
    int x,y;
    cin>>x>>y;
    for(int k=1;k<=m;++k){
        int n1=qz[m]-qz[k-1];
        int n2=qz[k-1];
        if(x<=n1&&n1<=y&&x<=n2&&n2<=y){
        cout<<k<<endl;
        return 0;
        }
    }
    cout<<0<<endl;
    return 0;
}