248852026-02-16 13:53:52szjSzitakötő (50 pont)cpp17Hibás válasz 10/5024ms4460 KiB
#include <bits/stdc++.h>
#define ll long long
#define blugy %1000000007
ll lowkey = 1e9+7;
using namespace std;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    ll n, k, i, mer, mar=0, sum=1, p1, p2, p;
    cin >> n >> k;
    k--;
    vector<ll> t(n), dp(n,0), cucc(n,0),s(n);
    cin >> t[0];
    s[0]=t[0];
    for(i=1; i<n; i++)
    {
        cin >> t[i];
        s[i]=s[i-1]+t[i];
    }
    for(i=0; i<k; i++)if(2*s[i]<=s[k])sum=(sum<<1)blugy;
    cucc[k]=sum;
    dp[k]=sum;
    for(i=k+1; i<n; i++)
    {
        p1=k+1;
        p2=i;
        while(p1!=p2)
        {
            p=(p1+p2)/2;
            if(2*s[p]>s[i])p2=p;
            else p1=p+1;
        }
        if(s[i-1]>t[i])dp[i]=cucc[i-1]-cucc[p1-2];
        if(dp[i]<0)dp[i]+=lowkey;
        dp[i]=dp[i]blugy;
        cucc[i]=cucc[i-1]+dp[i];
        if(cucc[i]<0)cucc[i]+=lowkey;
        cucc[i]=cucc[i]blugy;
    }
    cout << (2*dp[n-1])blugy;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base10/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/023ms4296 KiB
3Hibás válasz0/11ms316 KiB
4Elfogadva1/11ms316 KiB
5Elfogadva1/11ms316 KiB
6Elfogadva1/11ms348 KiB
7Elfogadva1/11ms316 KiB
8Hibás válasz0/11ms564 KiB
9Hibás válasz0/11ms316 KiB
10Hibás válasz0/21ms316 KiB
11Hibás válasz0/21ms424 KiB
12Hibás válasz0/21ms316 KiB
13Hibás válasz0/21ms336 KiB
14Elfogadva2/21ms316 KiB
15Hibás válasz0/22ms316 KiB
16Hibás válasz0/21ms500 KiB
17Hibás válasz0/21ms316 KiB
18Hibás válasz0/21ms316 KiB
19Hibás válasz0/21ms316 KiB
20Hibás válasz0/22ms500 KiB
21Hibás válasz0/11ms316 KiB
22Hibás válasz0/218ms3860 KiB
23Hibás válasz0/220ms4200 KiB
24Hibás válasz0/224ms4404 KiB
25Hibás válasz0/219ms4448 KiB
26Elfogadva2/217ms4284 KiB
27Hibás válasz0/214ms3600 KiB
28Hibás válasz0/218ms3380 KiB
29Hibás válasz0/217ms4088 KiB
30Hibás válasz0/221ms4460 KiB
31Elfogadva2/217ms4356 KiB