MAGCARI

Tower Defense 2

May 8th, 2023
798
-1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.76 KB | None | 0 1
  1. /*
  2.     Task    :
  3.     Author  : Phumipat C. [MAGCARI]
  4.     Language: C++
  5.     Created : 03 May 2023 [18:53]
  6. */
  7. #include<bits/stdc++.h>
  8. using namespace std;
  9. struct A{
  10.     int pos,v;
  11.     bool operator < (const A&o) const{
  12.         return pos < o.pos;
  13.     }
  14. };
  15. A a[200010];
  16. int main(){
  17.     int n,m,k,w,sum = 0;
  18.     cin >> n >> m >> k >> w;
  19.     for(int i=1;i<=m;i++)
  20.         cin >> a[i].pos;
  21.     for(int i=1;i<=m;i++)
  22.         cin >> a[i].v,sum+=a[i].v;
  23.     sort(a+1,a+m+1);
  24.     int lastUsed = 0;
  25.     for(int i=1;i<=m;i++){
  26.         int leftLimit = max(0,a[i].pos-w);
  27.         leftLimit = max(leftLimit,lastUsed+1);
  28.         if(leftLimit >= n+1)    break;
  29.         int rightLimit = min({n,a[i].pos+w,leftLimit+a[i].v-1});
  30.         int CanonNumber = min(rightLimit - leftLimit + 1,k);
  31.         sum-=CanonNumber;
  32.         k-=CanonNumber;
  33.         lastUsed = rightLimit;
  34.     }
  35.     cout << sum << '\n';
  36.     return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment