172542025-06-07 21:23:33algoproGamecpp17Időlimit túllépés 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);
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask110/10
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
subtask220/20
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
3Elfogadva2ms316 KiB
4Elfogadva4ms316 KiB
subtask30/70
1Elfogadva43ms316 KiB
2Elfogadva46ms428 KiB
3Elfogadva143ms508 KiB
4Elfogadva167ms632 KiB
5Elfogadva634ms1004 KiB
6Elfogadva1.263s564 KiB
7Elfogadva876ms568 KiB
8Elfogadva736ms564 KiB
9Elfogadva1.197s1080 KiB
10Elfogadva1.643s1076 KiB
11Elfogadva1.07s776 KiB
12Időlimit túllépés2.575s1332 KiB
13Elfogadva1.901s1076 KiB
14Időlimit túllépés2.588s1176 KiB