AlexandruOlteanu2017's blog

By AlexandruOlteanu2017, history, 7 years ago, In English

So.. I have a solution to a problem but it gives me a error.. Can you tell my what is wrong, please? http://codeforces.net/contest/546/submission/35514636

»
7 years ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

Dear AlexandruOlteanu2017,

You code passed test 1 successfully on my computer when compiled using C++17. Nonetheless, you have declared the global array dp as an array of size 2, and accessed dp[2] inside the main() function. This may cause a run-time error, as you should only access dp[0] and dp[1]. It seems that the C++17 compiler was able to detect and fix the array-index problem.

On the other hand, you may check the following C++17 implementation 35517203 for solving the problem.

Hope that this helps.

Best wishes

  • »
    »
    7 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Thank you very much. That was the problem. :)

    • »
      »
      »
      7 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      With pleasure.

    • »
      »
      »
      7 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      The following is an alternative C++17 solution using queue< int > to store the cards that each player holds.

      35519429

      Best wishes,

    • »
      »
      »
      7 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      The following is yet another alternative C++17 solution. Instead of using queue< int > to store the cards that each player holds, the card numbers between 1 and 10 are decremented by one to be between 0 and 9. A long long state member of each player is then used to store the present cards held by the player as the decimal digits of the variable. Adding/removing a card is implemented using a simple decimal number arithmetic.

      To check for the presence of cycles in the test case, the initial state before each fight is stored in an STL set. The fight continues until either the number of cards that one of the players holds is 0 or the new state after the fight is found in the set of previous states.

      35521757

    • »
      »
      »
      7 years ago, # ^ |
      Rev. 3   Vote: I like it 0 Vote: I do not like it

      The following is another alternative C++17 solution using a nested STL map to store the visited states, and a two-dimensional dp[x][count] array that stores the increment to be added to the present state when card number x is added to player who holds count cards.

      35526236