Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. #include <fstream>
  2. #include <iostream>
  3. #include <deque>
  4. #define MOD 1000000007
  5.  
  6. using namespace std;
  7.  
  8. int n, k, c, in[100000];
  9. long long ans = 1;
  10. bool pos[100000];
  11. deque<int> dq;
  12.  
  13. long long modx(long long a){return ((a%MOD+MOD)%MOD);}
  14.  
  15. long long f(long long x, int r)
  16. {
  17. long long dp[r], pow[r], ret = 0;
  18. if(r<k)//None actually have to hit the specified minimum
  19. {
  20. ret = 1;
  21. for(int i = 0; i<r; i++)
  22. {
  23. ret = modx(ret*x);
  24. }
  25. }
  26. else
  27. {
  28. pow[0] = dp[0] = 1;
  29. for(int i = 1; i<k; i++)
  30. {
  31. pow[i] = modx(pow[i-1]*(x-1));
  32. }
  33. for(int i = 1; i<r; i++)
  34. {
  35. dp[i] = dp[i-1];
  36. if(i>=k)
  37. {
  38. dp[i] = modx(dp[i]-modx(dp[i-k]*pow[k-1]));
  39. }
  40. dp[i] = modx(dp[i]*(x-1)+dp[i-1]);
  41. }
  42. for(int i = 0; i<k; i++)
  43. {
  44. ret = modx(ret+modx(dp[r-i-1]*pow[i]));
  45. }
  46. }
  47. return ret;
  48. }
  49.  
  50. int main()
  51. {
  52. ifstream infile("tracking2.txt");
  53. ofstream outfile("tracking2.out");
  54. infile >> n >> k;
  55. for(int i = 0; i<n-k+1; i++)
  56. {
  57. infile >> in[i];
  58. }
  59. for(int i = 0; i<n-k+1; i++)
  60. {
  61. if((in[i]<in[i+1])&&(i<n-k))
  62. {
  63. pos[i] = true;
  64. }
  65. else if((in[i]>in[i+1])&&(i<n-k))
  66. {
  67. pos[i+k] = true;
  68. }
  69. }
  70. for(int i = 0; i<n; i++)
  71. {
  72. while((dq.size()!=0)&&(dq[dq.size()-1]<in[i])&&(i<n-k+1)) dq.pop_back();
  73. if(i<n-k+1) dq.push_back(in[i]);
  74. if(!pos[i])
  75. {
  76. c++;
  77. if((pos[i+1])||(i==n-1)) ans = modx(ans*f((long long)(1000000001-dq[0]),c));
  78. }
  79. if(pos[i]) c = 0;
  80. if((i>k-2)&&(dq[0]==in[i-k+1])) dq.pop_front();
  81. }
  82. cout << ans << endl;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement