Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Task :
- Author : Phumipat C. [MAGCARI]
- Language: C++
- Created : 03 May 2023 [18:53]
- */
- #include<bits/stdc++.h>
- using namespace std;
- struct A{
- int pos,v;
- bool operator < (const A&o) const{
- return pos < o.pos;
- }
- };
- A a[200010];
- int main(){
- int n,m,k,w,sum = 0;
- cin >> n >> m >> k >> w;
- for(int i=1;i<=m;i++)
- cin >> a[i].pos;
- for(int i=1;i<=m;i++)
- cin >> a[i].v,sum+=a[i].v;
- sort(a+1,a+m+1);
- int lastUsed = 0;
- for(int i=1;i<=m;i++){
- int leftLimit = max(0,a[i].pos-w);
- leftLimit = max(leftLimit,lastUsed+1);
- if(leftLimit >= n+1) break;
- int rightLimit = min({n,a[i].pos+w,leftLimit+a[i].v-1});
- int CanonNumber = min(rightLimit - leftLimit + 1,k);
- sum-=CanonNumber;
- k-=CanonNumber;
- lastUsed = rightLimit;
- }
- cout << sum << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment