172542025-06-07 21:23:33algoproGamecpp17Time limit exceeded 30/1002.588s1332 KiB
// UUID: b0c182ce-7c2e-438e-8647-68b6a312b29d
#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
3Accepted2ms316 KiB
4Accepted4ms316 KiB
subtask30/70
1Accepted43ms316 KiB
2Accepted46ms428 KiB
3Accepted143ms508 KiB
4Accepted167ms632 KiB
5Accepted634ms1004 KiB
6Accepted1.263s564 KiB
7Accepted876ms568 KiB
8Accepted736ms564 KiB
9Accepted1.197s1080 KiB
10Accepted1.643s1076 KiB
11Accepted1.07s776 KiB
12Time limit exceeded2.575s1332 KiB
13Accepted1.901s1076 KiB
14Time limit exceeded2.588s1176 KiB