Advertisement
Guest User

Untitled

a guest
Nov 21st, 2011
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. using namespace std;
  5.  
  6. int n, m;
  7.  
  8. int dp[1001][2];
  9.  
  10. bool s[1000];
  11.  
  12. #ifdef EVAL
  13. ifstream in("input.txt");
  14. ofstream out("output.txt");
  15. #else
  16. istream &in(cin);
  17. ostream &out(cout);
  18. #endif
  19.  
  20. int main()
  21. {
  22.     string a;
  23.  
  24.     in >> m >> n >> a;
  25.  
  26.     for (int i = 0; i < m; i += 1)
  27.     {
  28.         s[i] = a[i] == '1';
  29.     }
  30.  
  31.     dp[0][0] = 1;
  32.  
  33.     for (int i = 1; i <= n; i += 1)
  34.     {
  35.         if (i < m)
  36.         {
  37.             dp[i][0] = (dp[i-1][0] + dp[i-1][1]) % 2011;
  38.             dp[i][1] = (dp[i-1][0] + dp[i-1][1]) % 2011;
  39.         }
  40.         else
  41.         {
  42.             dp[i][s[0]] = 0;
  43.             for (int j = 1; j < m; j += 1)
  44.             {
  45.                 dp[i][s[0]] += dp[i-j][!s[j]];
  46.                 dp[i][s[0]] %= 2011;
  47.             }
  48.             dp[i][!s[0]] = (dp[i-1][0] + dp[i-1][1]) % 2011;
  49.         }
  50.     }
  51.  
  52.     out << (dp[n][0] + dp[n][1]) % 2011 << endl;
  53. }
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement