// UUID: 5aa7749b-ba7e-44c7-ab8b-2394e514baf6
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
typedef long long ll;
#define X first
#define Y second
const int N=1e5+1;
int n,m,a[N];
int h[N];
ll solve(){
for(int i=1;i<=m;i++) h[a[i]]++;
ll ans=0;
h[0]=1;
for(int i=1,j=n;i<n;i++){
while (!h[j]) j--;
if (i==1){
h[j]--;
ans=-j;
while (!h[j]) j--;
}
int val=j;
if (i+m<=n){
if (a[i+m]>=val) val=a[i+m],h[j]++;
else h[a[i+m]]++;
}
h[j]--;
ans+=(i&1)?val:-val;
// cout<<m<<" "<<i<<" "<<val<<'\n';
}
// assert(count(h+1,h+N,1)==0);
return -ans;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int test;
scanf("%d%d",&n,&test);
// assert()
for(int i=1;i<=n;i++){
scanf("%d",a+i);
// assert(a[i]<=n);
}
while (test--){
scanf("%d",&m);
printf("%lld\n",solve());
}
}
| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 10/10 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 1ms | 316 KiB | ||||
| subtask2 | 20/20 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 1ms | 316 KiB | ||||
| 3 | Elfogadva | 2ms | 316 KiB | ||||
| 4 | Elfogadva | 4ms | 316 KiB | ||||
| subtask3 | 0/70 | ||||||
| 1 | Elfogadva | 39ms | 500 KiB | ||||
| 2 | Elfogadva | 41ms | 316 KiB | ||||
| 3 | Elfogadva | 127ms | 496 KiB | ||||
| 4 | Elfogadva | 149ms | 520 KiB | ||||
| 5 | Elfogadva | 565ms | 1028 KiB | ||||
| 6 | Elfogadva | 1.121s | 844 KiB | ||||
| 7 | Elfogadva | 777ms | 820 KiB | ||||
| 8 | Elfogadva | 746ms | 564 KiB | ||||
| 9 | Elfogadva | 1.069s | 1076 KiB | ||||
| 10 | Elfogadva | 1.467s | 1076 KiB | ||||
| 11 | Elfogadva | 1.08s | 820 KiB | ||||
| 12 | Időlimit túllépés | 2.575s | 1076 KiB | ||||
| 13 | Elfogadva | 1.692s | 1008 KiB | ||||
| 14 | Időlimit túllépés | 2.588s | 1076 KiB | ||||