In this HackerEarth Deleting arrays problem solution You are given two integers N and K denoting the number of elements in the array and an arbitrary integer respectively. You can perform the following operations:
  • Select an index i.
  • Delete the ith element.
  • Delete K elements to the left of it if they exist or you can delete all the elements if the number of elements to the left of it is less than K.
  • Delete K elements to the right of it if they exist or you can delete all if the number of elements to the right of it is less than K.
Your task is to delete all the elements of the array using the minimum number of provided operations.


HackerEarth Deleting arrays problem solution


HackerEarth Deleting arrays problem solution.

#include<bits/stdc++.h>
using namespace std;
#define FIO ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define mod 1000000007
#define endl "\n"
#define test ll txtc; cin>>txtc; while(txtc--)
typedef long long int ll;
typedef long double ld;
int main() {
FIO;
test
{
ll n,k; cin>>n>>k;
n+=2*k;
n/=(2*k+1);
cout<<n<<endl;
}
return 0;
}

Second solution

from math import ceil

t = int(input())
while t > 0:
t -= 1
n, k = map(int, input().split())
print(ceil(n / (2 * k + 1)))