fork download
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<string>
  4. #include<cstring>
  5. #include<vector>
  6. #include<stack>
  7. #include<queue>
  8. #include<deque>
  9. #include<map>
  10. #include<set>
  11. #include<limits>
  12. #include<climits>
  13. #include<cmath>
  14. #include<functional>
  15. #include<ctime>
  16. #include<cstdlib>
  17. #include<fstream>
  18. #include<typeinfo>
  19.  
  20. using namespace std;
  21.  
  22. typedef long long int ll;
  23. typedef short int i16;
  24. typedef unsigned long long int u64;
  25. typedef unsigned int u32;
  26. typedef unsigned short int u16;
  27. typedef unsigned char u8;
  28.  
  29. ifstream IN("bgm.in");
  30. ofstream OUT("bgm.out");
  31.  
  32. const int B = 1, E = 2, S = 3, I = 4, G = 5, O = 6, M = 7;
  33.  
  34. ll fmod(ll p) {
  35. if(p>=0) {
  36. return p%7;
  37. }
  38.  
  39. else {
  40. return (7-(abs(p)%7))%7;
  41. }
  42. }
  43.  
  44. int values[8][8];
  45.  
  46. int n;
  47.  
  48. int rem[8];
  49.  
  50. ll ans=0;
  51.  
  52. void input() {
  53. memset(values,0,sizeof(values));
  54.  
  55. IN>>n;
  56.  
  57. int i,w;
  58.  
  59. char c;
  60. ll val;
  61.  
  62. for(i=1;i<=n;i++) {
  63. IN>>c;
  64. IN>>val;
  65.  
  66. if(c=='B') {
  67. w=B;
  68. }
  69.  
  70. if(c=='E') {
  71. w=E;
  72. }
  73.  
  74. if(c=='S') {
  75. w=S;
  76. }
  77.  
  78. if(c=='I') {
  79. w=I;
  80. }
  81.  
  82. if(c=='G') {
  83. w=G;
  84. }
  85.  
  86. if(c=='O') {
  87. w=O;
  88. }
  89.  
  90. if(c=='M') {
  91. w=M;
  92. }
  93.  
  94. values[w][fmod(val)]++;
  95. }
  96. }
  97.  
  98. void gen(int letter) {
  99. if(letter>7) {
  100. if((rem[B]+rem[E]+rem[S]+rem[S]+rem[I]+rem[E])%7==0
  101. || (rem[G]+rem[O]+rem[E]+rem[S])%7==0
  102. || (rem[M]+rem[O]+rem[O])%7==0) {
  103. ll curr=1LL;
  104. int i;
  105.  
  106. for(i=1;i<=7;i++) {
  107. curr*=values[i][rem[i]];
  108. }
  109.  
  110. ans+=curr;
  111. }
  112.  
  113. return;
  114. }
  115.  
  116. int i;
  117.  
  118. for(i=0;i<7;i++) {
  119. rem[letter]=i;
  120. gen(letter+1);
  121. }
  122. }
  123.  
  124. void solve() {
  125. gen(1);
  126.  
  127. OUT<<ans<<'\n';
  128. }
  129.  
  130. int main() {
  131. ios_base::sync_with_stdio(false);
  132. IN.tie(NULL);
  133. OUT.tie(NULL);
  134.  
  135. input();
  136. solve();
  137.  
  138. IN.close();
  139. OUT.close();
  140.  
  141. return 0;
  142. }
  143.  
Success #stdin #stdout 0.02s 3272KB
stdin
Standard input is empty
stdout
Standard output is empty