172512025-06-07 21:19:53algoproGamecpp17Időlimit túllépés 30/1002.586s1080 KiB
// UUID: 0ed22f76-3eac-4637-b410-9847fbec049d
#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("%lld\n", ans);
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask110/10
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
subtask220/20
1Elfogadva1ms316 KiB
2Elfogadva1ms508 KiB
3Elfogadva3ms316 KiB
4Elfogadva4ms392 KiB
subtask30/70
1Elfogadva43ms420 KiB
2Elfogadva46ms316 KiB
3Elfogadva143ms508 KiB
4Elfogadva168ms468 KiB
5Elfogadva635ms820 KiB
6Elfogadva1.264s812 KiB
7Elfogadva876ms568 KiB
8Elfogadva736ms492 KiB
9Elfogadva1.197s1076 KiB
10Elfogadva1.643s1076 KiB
11Elfogadva1.07s564 KiB
12Időlimit túllépés2.585s1080 KiB
13Elfogadva1.899s1076 KiB
14Időlimit túllépés2.586s1076 KiB