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

PNTNG - Editorial

$
0
0

PROBLEM LINK:

Practice
Contest

Author:Konstantin Sokol
Tester:Tasnim Imran Sunny
Editorialist:Praveen Dhinwa

DIFFICULTY:

EASY

PREREQUISITES:

sorting, greedy

PROBLEM:

Given a three dimensional table of dimensions N * M * H. N * M is the dimension of the base of the table. H is the number of layers of the table. You can paint at most T k cells in k th layer with cost of painting a cell in the level being C k .

Find out the minimum cost needed to paint such that there is no vertical column which is unpainted on every layer.

QUICK EXPLANATION

  • You can select exactly N * M cells to paint such that the condition of no vertical column being unpainted is satisfied.

  • Use greedy algorithm for painting the cells. Paint the least cost N * M cells.

  • If there are not enough cells available for painting, then answer will be impossible.

EXPLANATION

As said earlier, as cost of each painting each cell is positive, we will not select more than N * M cells. So we will select N * M cells having least painting cost.

It can be done by using a simple greedy algorithm. We will sort the layers in increasing order of cost and will take the least costly N * M element.

If there are not enough cells available for painting, then the answer will be impossible. In other words, we can say that if the number of cells available for painting are less than N * M, then the answer is impossible.

Number of cells which can be painted will be T 1 + T 2 + .. T k .

Pseudo Code:

    Sort the layers in increasing order of C_k.
    toPaint = N * M;
    // toPaint number of cells to be painted.
    ans = 0
    // ans denotes the cost of the operations.
    for i = 1 to H:
        canPaint = min(toPaint, T_k);
        ans += canPaint * C_k
        toPaint -= canPaint
    if (toPaint > 0):
        // it means that you can not paint N * M cells, the answer will be impossible.
        print "impossible".
    else:
        print ans;

Complexity
O(H log H) : We need sorting + another O(H) loop. So time complexity will be O(H log H).

Possible reasons of getting wrong answers
You should make n and m long long rather than int, because n = 10^12 and m = 1 and vice versa.

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>