Advertisement
Guest User

Untitled

a guest
May 26th, 2015
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.97 KB | None | 0 0
  1. #include <vector>
  2. #include <string>
  3. #include <iostream>
  4. #include <fstream>
  5. #include <sstream>
  6. #include <list>
  7. #include <algorithm>
  8. #include <sstream>
  9. #include <set>
  10. #include <cmath>
  11. #include <map>
  12. #include <unordered_map>
  13. #include <unordered_set>
  14. #include <stack>
  15. #include <queue>
  16. #include <cstdio>
  17. //#include <cstdlib>
  18. #include <cstring>
  19. #include <numeric>
  20. #include <bitset>
  21. #include <deque>
  22. #include <memory>
  23.  
  24. const long long LINF = (5e17);
  25. const int INF = 1000000000;
  26. #define EPS 1e-7
  27. const int MOD = 1000000007;
  28.  
  29. using namespace std;
  30.  
  31. class TaroFillingAStringDiv1 {
  32.  
  33. public:
  34.  
  35. int getNumber(int N, vector <int> position, string value) {
  36. if (N==0)
  37. return 1;
  38. typedef pair<int, char> P;
  39. vector<P> m;
  40. for (int i=0; i<position.size(); ++i)
  41. m.push_back(P(position[i], value[i]));
  42. sort(m.begin(), m.end());
  43. long long ans = 1;
  44. for (int i=1; i<m.size(); ++i) {
  45. int d = m[i].first - m[i-1].first - 1;
  46. if ( (d&1) == (m[i].second != m[i-1].second) )
  47. ans = (ans * (d+1) )%MOD;
  48. }
  49. return (int)ans;
  50. }
  51.  
  52.  
  53. // BEGIN CUT HERE
  54. public:
  55. void run_test(int Case) { if ((Case == -1) || (Case == 0)) test_case_0(); if ((Case == -1) || (Case == 1)) test_case_1(); if ((Case == -1) || (Case == 2)) test_case_2(); if ((Case == -1) || (Case == 3)) test_case_3(); }
  56. private:
  57. template <typename T> string print_array(const vector<T> &V) { ostringstream os; os << "{ "; for (typename vector<T>::const_iterator iter = V.begin(); iter != V.end(); ++iter) os << '\"' << *iter << "\","; os << " }"; return os.str(); }
  58. void verify_case(int Case, const int &Expected, const int &Received) { cerr << "Test Case #" << Case << "..."; if (Expected == Received) cerr << "PASSED" << endl; else { cerr << "FAILED" << endl; cerr << "\tExpected: \"" << Expected << '\"' << endl; cerr << "\tReceived: \"" << Received << '\"' << endl; } }
  59. void test_case_0() { int Arg0 = 3; int Arr1[] = {1, 3}; vector <int> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0]))); string Arg2 = "AB"; int Arg3 = 2; verify_case(0, Arg3, getNumber(Arg0, Arg1, Arg2)); }
  60. void test_case_1() { int Arg0 = 4; int Arr1[] = {2, 1, 3, 4}; vector <int> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0]))); string Arg2 = "ABBA"; int Arg3 = 1; verify_case(1, Arg3, getNumber(Arg0, Arg1, Arg2)); }
  61. void test_case_2() { int Arg0 = 25; int Arr1[] = {23, 4, 8, 1, 24, 9, 16, 17, 6, 2, 25, 15, 14, 7, 13}; vector <int> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0]))); string Arg2 = "ABBBBABABBAAABA"; int Arg3 = 1; verify_case(2, Arg3, getNumber(Arg0, Arg1, Arg2)); }
  62. void test_case_3() { int Arg0 = 305; int Arr1[] = {183, 115, 250, 1, 188, 193, 163, 221, 144, 191, 92, 192, 58, 215, 157, 187, 227, 177, 206, 15, 272, 232, 49, 11, 178, 59, 189, 246}; vector <int> Arg1(Arr1, Arr1 + (sizeof(Arr1) / sizeof(Arr1[0]))); string Arg2 = "ABAABBABBAABABBBBAAAABBABBBA"; int Arg3 = 43068480; verify_case(3, Arg3, getNumber(Arg0, Arg1, Arg2)); }
  63.  
  64. // END CUT HERE
  65.  
  66.  
  67. };
  68.  
  69.  
  70.  
  71. // BEGIN CUT HERE
  72.  
  73. int main() {
  74.  
  75. TaroFillingAStringDiv1 ___test;
  76.  
  77. ___test.run_test(-1);
  78.  
  79. }
  80.  
  81. // END CUT HERE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement