GAMENUMB - Getting WA.

I am trying to solve CodeChef: Practical coding for everyone - smaller case only where D[i] = 1.

What is wrong with my code.
Link : CodeChef: Practical coding for everyone

You are getting WA because you are directly removing the numbers while you have to remove the no. of cards of numbers. Take it like this. For

a[] = {1, 2, 3, 4, 5}

d[] = {3, 2, 5, 3, 2}

then the cards will be

1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5

let these cards be in a array c[].

then,


           int start = 0;
            int end = n;
            for(int i = 0; i < k; i++) {
                if((i+1) % 2 == 1 ) {
                    start += b[i];
                }
                else{
                    end -= b[i];
                }
            }
            long sum = 0;
            for(int i = start; i < end; i++) {
                sum+=a[i];
            }
    

you should use c[i] instead of the above a[i] and no. of elements of c instead of n. But It will be a very large no. So you are not advised to do so.

For better approach refer to editorial: here

Edit: The question is saying that the player is selecting b[i] cards and removing the rest while your solution removes b[i] cards. So you have to update your

                if((i+1) % 2 == 1 ) {
                    start += b[i];
                }
                else{
                    end -= b[i];
                }
    

to

                if((i+1) % 2 == 1 ) {
                    start = end - b[i];
                }
                else{
                    end = start + b[i];
                }
1 Like

But I am solving for smaller case only where d[i] = 1, so c[i] will be exact. copy of a[i].

Thanks for pointing out my error I have edited my answer.

1 Like

I got it myself a few minutes ago, I did read the problem properly. Anyways Thank you