172532025-06-07 21:21:35algoproGamecpp17Time limit exceeded 30/1002.588s1088 KiB
// UUID: 89046ba7-26ab-4dfc-98bf-aeae014f080e
#include <cstdio>
#include <algorithm>
using namespace std;

int a[100001], q[100001];

int main() {
	int n, k, x, ptr;
    scanf("%d%d", &n, &k);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    while(k--){
        scanf("%d", &x);
        ptr=0;
        for(int i=0;i<x;i++){
            ptr=max(ptr, a[i]);
            ++q[a[i]];
        }
        long long ans=ptr;
        q[ptr]--;
        for (;ptr >= 0 && q[ptr]<=0; --ptr);
        for(int i=1, j = x; i<n; ++i, ++j){
            if(i%2==0){
                if(j<n && a[j]>ptr){            
                    ans+=a[j];
                }else{
                    if(j<n) ++q[a[j]];
                    ans+=ptr;
                    q[ptr]--;
                    for (;ptr >= 0 && q[ptr]<=0; --ptr);
                }
            }else{
                if(j<n && a[j]>ptr){
                    ans-=a[j];
                }else{
                    if(j<n) ++q[a[j]];
                    ans-=ptr;
                    q[ptr]--;
                    for (;ptr >= 0 && q[ptr]<=0; --ptr);
                }
            }
        }
        printf("%lld\n", ans);
    }
}
SubtaskSumTestVerdictTimeMemory
subtask110/10
1Accepted1ms316 KiB
2Accepted1ms316 KiB
subtask220/20
1Accepted1ms316 KiB
2Accepted1ms316 KiB
3Accepted3ms316 KiB
4Accepted4ms404 KiB
subtask30/70
1Accepted43ms428 KiB
2Accepted46ms432 KiB
3Accepted143ms316 KiB
4Accepted167ms464 KiB
5Accepted635ms1016 KiB
6Accepted1.264s804 KiB
7Accepted878ms564 KiB
8Accepted736ms680 KiB
9Accepted1.197s1076 KiB
10Accepted1.641s1076 KiB
11Accepted1.069s564 KiB
12Time limit exceeded2.582s1088 KiB
13Accepted1.901s1076 KiB
14Time limit exceeded2.588s1076 KiB