In this HackerEarth Sum of cards problem solution Robert has a special set of cards to play with. Each card has an integer written on it and the integer can be negative, positive, or zero. The absolute value of the integer on the card cannot exceed x.

Now, Robert misplaced some of the cards and currently has only N cards. He wants to have the sum of integers present on the cards to be zero. 

Find the minimum number of cards that Robert has to add to N cards to make the sum of integers present on all the cards to be zero.

You can assume that Robert has an infinite number of cards with each integer number from -x to x.


HackerEarth Sum of cards problem solution


HackerEarth Sum of cards problem solution.

#include<bits/stdc++.h>
#define int long long int
using namespace std;


void solve(){
int n;
cin >> n;
assert(1 <= n and n <= 100000);

int x;
cin >> x;
assert(1 <= x and x <= 1000000);

int sum = 0;
for(int i = 0 ; i < n ; i++){
int val;
cin >> val;
assert(-x <= val and val <= x);
sum += val;
}

sum = abs(sum);

int answer = sum / x;
if(sum % x != 0) answer++;
cout << answer << endl;
}

signed main(){
int t;
cin >> t;
assert(1 <= t and t <= 10);
while(t--)
{
solve();
}
}

Second solution

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int N = 2e5, B = 62;
int t, n;
bool pr[N];

int main() {
ios::sync_with_stdio(0), cin.tie(0);
cin >> t;
while (t--) {
int x;
cin >> n >> x;
ll s = 0;
for (int i = 0; i < n; ++i) {
int y;
cin >> y;
s += y;
}
cout << (abs(s) + x - 1) / x << '\n';
}
}