Quantcast
Channel: CodeChef Discuss - latest questions
Viewing all articles
Browse latest Browse all 39796

RRSUM - editorial

$
0
0

PROBLEM LINK:

Practice
Contest

Author:Roman Rubanenko
Tester:Shiplu Hawlader
Editorialist:Praveen Dhinwa

DIFFICULTY:

Medium

PREREQUISITES:

Simple Math.

PROBLEM:

Given N.
Let A = {1, 2, , N} and B = {N + 1, , 2 * N}.
Let C contains elements representing sum of pairs of A and B. Note that C is a multiset.
You will be given queries in which you are asked to find cnt of q in C.

Explanation

Note that entries in C will be between N + 2 to 3N.

Given a q, how to find cnt of q in C?

Let us say that number selected from A is x and from B is y.
So x + y = q.
Rewrite as x = q - y.

We see that y should satisfy following inequalities.
N + 1 <= y <= 2N i.e. 1 <= q - y <= N.

You can see that count of valid y will be answer of our problem.

Can you get value of count of valid y from the above inequalities?

Yes, Rewrite both the inequalities as follows.
1 <= q - y <= N will become q - N <= y <= q - 1.
N + 1 <= y <= 2N

So we notice that y should be at least max(q - N, N + 1) and at most min(q - 1, 2N).

Now, can you find count of valid y's?

Yes, if y lies in the range [L, R], then answer will be R - L + 1.
Note that if L > R, then there is no solution.

Pseudo Code long L = max(q - N, N + 1); long R = min(q - 1, 2N); long long ans = 0; if (L > R) ans = 0; else ans = R - L + 1;

Few Small Points

  • Note that q can overflow from long data type because q can go upto 3 * 10^9. You should use long long data type.

Complexity:
For each query, we are just doing a constant number of operations. So for each test case, if there are queries, our time complexity will be O(m) per test case.

AUTHOR'S and TESTER'S SOLUTIONS:

Author's solution
Tester's solution


Viewing all articles
Browse latest Browse all 39796

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>