fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define ll long long int
  6.  
  7. typedef vector <int> vi;
  8. typedef pair<int,int> ii;
  9. typedef vector <vi> vvi;
  10. typedef vector <ll> vll;
  11. typedef vector <bool> vb;
  12.  
  13. #define f(i,j,n) for(int i=j;i<n;i++)
  14. #define ff(i,j,n) for(int i=j;i>=n;i--)
  15. #define pb push_back
  16. #define mp make_pair
  17. #define F first
  18. #define S second
  19. #define all(v) v.begin(),v.end()
  20. #define testcase int t; cin>>t; while(t--)
  21.  
  22. const ll mod = 1000000000LL + 7LL;
  23.  
  24. ll n,k;
  25. ll ca[17],a,b,c,d,e,tmp[17],ret,kaka;
  26. ll ch[]={-1,0,1};
  27.  
  28. int main() {
  29. ios_base::sync_with_stdio(0);
  30. cin.tie(0);
  31. cout.tie(0);
  32. ca[0]=1;
  33. cin>>n>>k;
  34. d=16;
  35. ret=1;
  36.  
  37. while(n-- && ret)
  38. {
  39. cin>>a>>b>>c;
  40. e = min(d,c);
  41.  
  42. if(b>k)
  43. b=k,ret=0;
  44.  
  45. f(i,e+1,16)
  46. ca[i]=0;
  47. if(a==0)
  48. a=1;
  49. f(ka,a,b)
  50. {
  51.  
  52. f(i,0,16)
  53. tmp[i]=ca[i],ca[i]=0;
  54.  
  55. if(ka==a)
  56. kaka = min(16LL,e+1);
  57. else
  58. kaka = min(16LL,c+1);
  59. f(i,0,kaka)
  60. {
  61. f(j,0,3)
  62. {
  63. if(ch[j]+i>=0 && ch[j]+i<=15)
  64. {
  65. ca[i] += tmp[i+ch[j]];
  66. // if(i==0)
  67. // cout<<tmp[i+ch[j]]<<" ";
  68. }
  69. }
  70. // if(i==0)
  71. // cout<<ca[i]<<"\n";
  72. }
  73. // f(i,0,3)
  74. // cout<<ca[i]<<" ";
  75. // cout<<"\n";
  76. }
  77.  
  78. d = c;
  79.  
  80. }
  81. f(i,0,16)
  82. tmp[i]=ca[i],ca[i]=0;
  83. f(i,0,16)
  84. {
  85. f(j,0,3)
  86. {
  87. if(ch[j]+i>=0 && ch[j]+i<=15)
  88. {
  89. ca[i] += tmp[i+ch[j]];
  90. // if(i==0)
  91. // cout<<tmp[i+ch[j]]<<" ";
  92. }
  93. }
  94. // if(i==0)
  95. // cout<<ca[i]<<"\n";
  96. }
  97. // f(i,0,3)
  98. // cout<<ca[i]<<" ";
  99. // cout<<"\n";
  100. cout<<ca[0];
  101. return 0;
  102. }
Success #stdin #stdout 0s 15240KB
stdin
1 1
0 3 9
stdout
1