172492025-06-07 21:19:10algoproGamecpp17Wrong answer 30/1002.582s1268 KiB
// UUID: fc65bbcf-e1f2-4ec4-9015-fc4df1138646
#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]]++;
        }
        int 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
1Accepted1ms508 KiB
2Accepted1ms316 KiB
subtask220/20
1Accepted1ms316 KiB
2Accepted1ms316 KiB
3Accepted3ms400 KiB
4Accepted4ms396 KiB
subtask30/70
1Accepted45ms316 KiB
2Accepted48ms508 KiB
3Accepted144ms460 KiB
4Accepted171ms508 KiB
5Accepted644ms820 KiB
6Accepted1.282s564 KiB
7Accepted888ms564 KiB
8Wrong answer736ms720 KiB
9Accepted1.222s1076 KiB
10Accepted1.677s1012 KiB
11Wrong answer1.108s564 KiB
12Time limit exceeded2.579s1076 KiB
13Accepted1.939s1076 KiB
14Time limit exceeded2.582s1268 KiB