// UUID: 3780d355-acc1-42bb-9734-e5ecf64aa0b2
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
typedef long long ll;
#define X first
#define Y second
const int MOD=1e9+7;
const int N=1e5+10;
const ll inf=1e16;
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 | 368 KiB | ||||
| subtask2 | 20/20 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 1ms | 316 KiB | ||||
| 3 | Elfogadva | 3ms | 316 KiB | ||||
| 4 | Elfogadva | 4ms | 316 KiB | ||||
| subtask3 | 0/70 | ||||||
| 1 | Elfogadva | 39ms | 464 KiB | ||||
| 2 | Elfogadva | 41ms | 316 KiB | ||||
| 3 | Elfogadva | 127ms | 504 KiB | ||||
| 4 | Elfogadva | 149ms | 512 KiB | ||||
| 5 | Elfogadva | 566ms | 820 KiB | ||||
| 6 | Elfogadva | 1.121s | 848 KiB | ||||
| 7 | Elfogadva | 777ms | 588 KiB | ||||
| 8 | Elfogadva | 748ms | 768 KiB | ||||
| 9 | Elfogadva | 1.069s | 1036 KiB | ||||
| 10 | Elfogadva | 1.467s | 1184 KiB | ||||
| 11 | Elfogadva | 1.082s | 820 KiB | ||||
| 12 | Időlimit túllépés | 2.576s | 1076 KiB | ||||
| 13 | Elfogadva | 1.694s | 1080 KiB | ||||
| 14 | Időlimit túllépés | 2.576s | 1268 KiB | ||||