Guest User

IARCS Tiling

a guest
May 27th, 2017
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.84 KB | None | 0 0
  1. /*
  2.     Mode 0 - Complete width tiled.
  3.     Mode 1 - Width 0-1 tiled.
  4.     Mode 2 - Width 1-2 tiled.
  5.     Mode 3 - Completely untiled.
  6. */
  7. #include <iostream>
  8. #include <cstring>
  9. #define mod 10000
  10. using namespace std;
  11. int dp[1000000][4];
  12. int main()
  13. {
  14.         int n;
  15.         cin>>n;
  16.         memset(dp, -1, sizeof(dp));
  17.         dp[0][0] = 1;
  18.         dp[0][1] = dp[0][2] = 0;
  19.         dp[0][3] = 1;
  20.         for (int col = 1; col < n; col++)
  21.         {
  22.                 for (int mode = 0; mode < 4; mode++)
  23.                 {
  24.                         dp[col][mode] = 0;
  25.                         if (mode == 0)
  26.                         {      
  27.                                 dp[col][mode] += dp[col-1][1];
  28.                                 dp[col][mode] += dp[col-1][2];
  29.                                 dp[col][mode] += dp[col-1][3];
  30.                                 dp[col][mode] += dp[col-1][0];
  31.                                 dp[col][mode] %= mod;
  32.                         }
  33.                         else if (mode == 1)
  34.                         {
  35.                                 dp[col][mode] += dp[col-1][3];
  36.                                 dp[col][mode] += dp[col-1][2];
  37.                                 dp[col][mode] %= mod;
  38.                         }
  39.                         else if (mode == 2)
  40.                         {
  41.                                 dp[col][mode] += dp[col-1][3];
  42.                                 dp[col][mode] += dp[col-1][1];
  43.                                 dp[col][mode] %= mod;
  44.                         }
  45.                         else if (mode == 3)
  46.                         {
  47.                                 dp[col][mode] += dp[col-1][0];
  48.                                 dp[col][mode] %= mod;
  49.                         }
  50.                         else;
  51.                 }
  52.         }
  53.         int ans = dp[n-1][0];
  54.         cout<<ans<<"\n";
  55. }
Add Comment
Please, Sign In to add comment