# Daily HackerRank Challenge - Day 1 Wing-Kam Updated on ・5 min read

Daily HackerRank Challenge (30 Part Series)

This is a series of Daily HackerRank Challenge. Each day I show the some solutions written in C++.

# Diagonal Difference

Given a square matrix of size N×N, calculate the absolute difference between the sums of its diagonals. containing N space-separated integers describing the columns. Print the absolute difference between the two sums of the matrix's diagonals as a single integer.

Sample Input

3
11 2 4
4 5 6
10 8 -12


Sample Output

15


The primary diagonal is

11
5
-12


If we find out [x][y] of each value of the diagonal, we got

        [x][y]
11  :   
5   :   
-12 :   


Hence, we can sum up the value like this

d1 += arr[i][i];


Sum across the primary diagonal: 11 + 5 - 12 = 4

The secondary diagonal is

     4
5
10


If we find out [x][y] of each value of the diagonal, we got

     [x][y]
4  : 
5  : 
10 : 


x increases by 1 while y decreases by 1. i starts from 0. Hence, we got [n-i-1] for x and [i] for y.

d2 += arr[n-i-1][i];


Sum across the secondary diagonal: 4 + 5 + 10 = 19

Difference: |4 - 19| = 15

Call abs to return the absolute value of parameter d1-d2

abs(d1 - d2);


Final Solution

HackerRank provides a template to start. We just need to focus on the function diagonalDifference. Starting from the next question, I will remove all and write the code from scratch.

#include <bits/stdc++.h>

using namespace std;

string ltrim(const string &);
string rtrim(const string &);
vector<string> split(const string &);

int diagonalDifference(vector<vector<int>> arr, int n) {
int d1=0, d2=0;

for(int i=0;i<n;i++) {
// n=3
// x y
// 0 0
// 1 1
// 2 2
d1 += arr[i][i];
// n=3
// x y
// 0 2
// 1 1
// 2 0
d2 += arr[n-i-1][i];
}

return abs(d1 - d2);
}

int main()
{
ofstream fout(getenv("OUTPUT_PATH"));

string n_temp;
getline(cin, n_temp);

int n = stoi(ltrim(rtrim(n_temp)));

vector<vector<int>> arr(n);

for (int i = 0; i < n; i++) {
arr[i].resize(n);

string arr_row_temp_temp;
getline(cin, arr_row_temp_temp);

vector<string> arr_row_temp = split(rtrim(arr_row_temp_temp));

for (int j = 0; j < n; j++) {
int arr_row_item = stoi(arr_row_temp[j]);

arr[i][j] = arr_row_item;
}
}

int result = diagonalDifference(arr, n);

fout << result << "\n";

fout.close();

return 0;
}

string ltrim(const string &str) {
string s(str);

s.erase(
s.begin(),
find_if(s.begin(), s.end(), not1(ptr_fun<int, int>(isspace)))
);

return s;
}

string rtrim(const string &str) {
string s(str);

s.erase(
find_if(s.rbegin(), s.rend(), not1(ptr_fun<int, int>(isspace))).base(),
s.end()
);

return s;
}

vector<string> split(const string &str) {
vector<string> tokens;

string::size_type start = 0;
string::size_type end = 0;

while ((end = str.find(" ", start)) != string::npos) {
tokens.push_back(str.substr(start, end - start));

start = end + 1;
}

tokens.push_back(str.substr(start));

}


# A Very Big Sum

Calculate and print the sum of the elements in an array, keeping in mind that some of those integers may be quite large.

Sample Input

5
1000000001 1000000002 1000000003 1000000004 1000000005


Sample Output

5000000015


Nothing special. Read an input and sum them up. long should be enough in this case. Let's delete all the code provided by HackerRank. Copy and paste the template.

To keep the solution short here, I will not show the following code from now on. Make sure you have included it.

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

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<string, string> pss;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<pii> vii;
typedef vector<ll> vl;
typedef vector<vl> vvl;

double EPS=1e-9;
int INF=1000000005;
long long INFF=1000000000000000005ll;
double PI=acos(-1);
int dirx={ -1, 0, 0, 1, -1, -1, 1, 1 };
int diry={ 0, 1, -1, 0, -1, 1, -1, 1 };

#define DEBUG fprintf(stderr, "====TESTING====\n")
#define VALUE(x) cerr << "The value of " << #x << " is " << x << endl
#define debug(...) fprintf(stderr, __VA_ARGS__)
#define FOR(a, b, c) for (int(a)=(b); (a) < (c); ++(a))
#define FORN(a, b, c) for (int(a)=(b); (a) <= (c); ++(a))
#define FORD(a, b, c) for (int(a)=(b); (a) >= (c); --(a))
#define FORSQ(a, b, c) for (int(a)=(b); (a) * (a) <= (c); ++(a))
#define FORC(a, b, c) for (char(a)=(b); (a) <= (c); ++(a))
#define FOREACH(a, b) for (auto&(a) : (b))
#define REP(i, n) FOR(i, 0, n)
#define REPN(i, n) FORN(i, 1, n)
#define MAX(a, b) a=max(a, b)
#define MIN(a, b) a=min(a, b)
#define SQR(x) ((ll)(x) * (x))
#define RESET(a, b) memset(a, b, sizeof(a))
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define ALL(v) v.begin(), v.end()
#define ALLA(arr, sz) arr, arr + sz
#define SIZE(v) (int)v.size()
#define SORT(v) sort(ALL(v))
#define REVERSE(v) reverse(ALL(v))
#define SORTA(arr, sz) sort(ALLA(arr, sz))
#define REVERSEA(arr, sz) reverse(ALLA(arr, sz))
#define PERMUTE next_permutation
#define TC(t) while (t--)
#define FAST_INP  ios_base::sync_with_stdio(false);cin.tie(NULL)


Final Solution

int n;
long x, sum=0;

int main()
{
FAST_INP;

cin >> n;
REP(i,n){
cin >> x;
sum += x;
}
cout << sum;
return 0;
}


# Simple Array Sum

Given an array of integers, find the sum of its elements. For example, if the array ar = [1,2,3], 1+2+3=6, so return 6.

Sample Input

6
1 2 3 4 10 11


Sample Output

31


Similar to the previous question, this time int is enough.

Final Solution

int n, x, sum=0;

int main()
{
FAST_INP;

cin >> n;
REP(i,n){
cin >> x;
sum += x;
}
cout << sum;
return 0;
}


# Compare the Triplets

Alice and Bob each created one problem for HackerRank. A reviewer rates the two challenges, awarding points on a scale from 1 to 100 for three categories: problem clarity, originality, and difficulty.

If a[i] > b[i], then Alice is awarded 1 point.
If a[i] < b[i], then Bob is awarded 1 point.
If a[i] = b[i], then neither person receives a point.

Sample Input

5 6 7
3 6 10


Sample Output

1 1


We just need to read 6 integer and focus on a[i]>b[i] and b[i]>a[i] cases only as a[i]=b[i] gives 0 point.

Final Solution

int a1, a2, a3, b1, b2, b3, a, b;

int main()
{
FAST_INP;

cin >> a1 >> a2 >> a3;
cin >> b1 >> b2 >> b3;
a = (a1 > b1) + (a2 > b2) + (a3 > b3);
b = (b1 > a1) + (b2 > a2) + (b3 > a3);
cout << a << " " << b;
return 0;
}


# Complete Code

Check out the complete code via below links

Daily HackerRank Challenge (30 Part Series)

### Discussion   