172652025-06-08 12:15:07algoproGamecpp17Time limit exceeded 30/1002.588s1076 KiB
// UUID: 5aa7749b-ba7e-44c7-ab8b-2394e514baf6
#include <bits/stdc++.h>

using namespace std;


typedef pair<int,int> ii;
typedef long long ll;

#define X first
#define Y second

const int N=1e5+1;

int n,m,a[N];

int h[N];

ll solve(){
    for(int i=1;i<=m;i++) h[a[i]]++;
    ll ans=0;
    h[0]=1;
    for(int i=1,j=n;i<n;i++){
        while (!h[j]) j--;
        if (i==1){
            h[j]--;
            ans=-j;
            while (!h[j]) j--;
        }
        int val=j;
        if (i+m<=n){
            if (a[i+m]>=val) val=a[i+m],h[j]++;
            else h[a[i+m]]++;
        }
        h[j]--;
        ans+=(i&1)?val:-val;
//        cout<<m<<" "<<i<<" "<<val<<'\n';
    }
//    assert(count(h+1,h+N,1)==0);
    return -ans;
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int test;
    scanf("%d%d",&n,&test);
//    assert()
    for(int i=1;i<=n;i++){
        scanf("%d",a+i);
//        assert(a[i]<=n);
    }
    while (test--){
        scanf("%d",&m);
        printf("%lld\n",solve());
    }
}

SubtaskSumTestVerdictTimeMemory
subtask110/10
1Accepted1ms316 KiB
2Accepted1ms316 KiB
subtask220/20
1Accepted1ms316 KiB
2Accepted1ms316 KiB
3Accepted2ms316 KiB
4Accepted4ms316 KiB
subtask30/70
1Accepted39ms500 KiB
2Accepted41ms316 KiB
3Accepted127ms496 KiB
4Accepted149ms520 KiB
5Accepted565ms1028 KiB
6Accepted1.121s844 KiB
7Accepted777ms820 KiB
8Accepted746ms564 KiB
9Accepted1.069s1076 KiB
10Accepted1.467s1076 KiB
11Accepted1.08s820 KiB
12Time limit exceeded2.575s1076 KiB
13Accepted1.692s1008 KiB
14Time limit exceeded2.588s1076 KiB