250482026-02-17 15:30:45999Szitakötő (50 pont)cpp17Hibás válasz 6/5050ms3620 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;
#define int long long
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

int pow(int a,int b){
    if(b==0)return 1;
    if(b%2==1)return (pow(a,b-1)*a)%(int)(1e9+7);
    int x=pow(a,b/2);
    return (x*x)%(int)(1e9+7);
}

int bal(vector<int> v,int n,int eq){
    vector<int> pref(n);
    pref[0]=v[0];
    for(int i = 1;i<n;i++){
        pref[i]=pref[i-1]+v[i];
    }
    int co=0;
    for(int i = 0;i<n;i++){
        if(i>0&&v[i]>pref[i-1]||i>0&&eq&&v[i]>=pref[i-1])break;
        if(pref[i]>pref[n-1]-pref[i]||eq&&pref[i]>pref[n-1]-pref[i]){
            co+=pow(2LL,n-i-1LL);
            co%=(int)(1e9+7);
            break;
        }
    }
    return co;
}


signed main() {
    int n,k;cin>>n>>k;
    k--;
    vector<int> v(n);
    for(int i = 0;i<n;i++){
        cin>>v[i];
    }
    vector<int> elsofele,masodikfele;
    masodikfele.push_back(0); //ide jon majd a novelt k
    int sum=0,sum1=0;
    for(int i = 0;i<n;i++){
        if(i<k+1){
            elsofele.push_back(v[i]);
            sum+=v[i];
        }
        else {
            sum1+=v[i];
            masodikfele.push_back(v[i]);
        }
    }
    reverse(elsofele.begin(),elsofele.end());
    masodikfele[0]=sum;
    int w1=(bal(elsofele,elsofele.size(),1)*bal(masodikfele,masodikfele.size(),0))%(int)(1e9+7);
    elsofele[0]=sum1+v[k];
    masodikfele[0]=v[k];
    int w2=(bal(elsofele,elsofele.size(),1)*bal(masodikfele,masodikfele.size(),0))%(int)(1e9+7);
    cout<<(w1+w2)%(int)(1e9+7)<<endl;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base6/50
1Elfogadva0/01ms500 KiB
2Hibás válasz0/050ms3496 KiB
3Hibás válasz0/11ms316 KiB
4Elfogadva1/11ms316 KiB
5Hibás válasz0/11ms316 KiB
6Elfogadva1/11ms316 KiB
7Hibás válasz0/11ms316 KiB
8Hibás válasz0/11ms316 KiB
9Hibás válasz0/11ms316 KiB
10Hibás válasz0/21ms500 KiB
11Hibás válasz0/21ms316 KiB
12Hibás válasz0/21ms508 KiB
13Hibás válasz0/21ms316 KiB
14Hibás válasz0/21ms348 KiB
15Hibás válasz0/21ms316 KiB
16Hibás válasz0/21ms560 KiB
17Hibás válasz0/21ms500 KiB
18Hibás válasz0/21ms560 KiB
19Hibás válasz0/22ms512 KiB
20Hibás válasz0/22ms316 KiB
21Hibás válasz0/11ms316 KiB
22Hibás válasz0/237ms3620 KiB
23Hibás válasz0/239ms3488 KiB
24Hibás válasz0/250ms3468 KiB
25Hibás válasz0/248ms3056 KiB
26Elfogadva2/250ms3612 KiB
27Hibás válasz0/223ms3488 KiB
28Hibás válasz0/241ms3504 KiB
29Hibás válasz0/237ms2888 KiB
30Hibás válasz0/250ms3620 KiB
31Elfogadva2/248ms3496 KiB