172502025-06-07 21:19:35algoproGamecpp17Wrong answer 30/1002.582s1096 KiB
// UUID: e3cfe069-1ad8-4852-b73f-3962df1cd284
#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]--;
        while (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]--;
                    while (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]--;
                    while (ptr >= 0 && q[ptr]<=0) --ptr;
                }
            }
        }
        printf("%d\n", ans);
    }
}
SubtaskSumTestVerdictTimeMemory
subtask110/10
1Accepted1ms512 KiB
2Accepted1ms316 KiB
subtask220/20
1Accepted1ms316 KiB
2Accepted1ms316 KiB
3Accepted2ms316 KiB
4Accepted4ms316 KiB
subtask30/70
1Accepted43ms420 KiB
2Accepted46ms428 KiB
3Accepted143ms460 KiB
4Accepted168ms476 KiB
5Accepted635ms820 KiB
6Accepted1.263s796 KiB
7Accepted876ms788 KiB
8Wrong answer736ms584 KiB
9Accepted1.197s1076 KiB
10Accepted1.643s1096 KiB
11Wrong answer1.069s564 KiB
12Time limit exceeded2.578s1088 KiB
13Accepted1.902s1076 KiB
14Time limit exceeded2.582s1076 KiB