172652025-06-08 12:15:07algoproGamecpp17Időlimit túllépés 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());
    }
}

RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask110/10
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
subtask220/20
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
3Elfogadva2ms316 KiB
4Elfogadva4ms316 KiB
subtask30/70
1Elfogadva39ms500 KiB
2Elfogadva41ms316 KiB
3Elfogadva127ms496 KiB
4Elfogadva149ms520 KiB
5Elfogadva565ms1028 KiB
6Elfogadva1.121s844 KiB
7Elfogadva777ms820 KiB
8Elfogadva746ms564 KiB
9Elfogadva1.069s1076 KiB
10Elfogadva1.467s1076 KiB
11Elfogadva1.08s820 KiB
12Időlimit túllépés2.575s1076 KiB
13Elfogadva1.692s1008 KiB
14Időlimit túllépés2.588s1076 KiB