a53

pif

a53
Mar 14th, 2019
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. ifstream in("pif.in");
  4. ofstream out("pif.out");
  5. int n,k,zb,zf;
  6. int npnf[1000010],// numarul de persoane de sex feminin noi
  7. npaff[1000010],// numarul de persoane de sex feminin active pt fete
  8. npafb[1000010],// numarul de persoane de sex feminin active pt baieti
  9. sf[1000010];// numarul total de persoane de sex feminin
  10. int npnb[1000010],// numarul de persoane de sex masculin noi
  11. npabf[1000010],// numarul de persoane de sex masculin active pt fete
  12. npabb[1000010],// numarul de persoane de sex masculin active pt baieti
  13. sb[1000010];// numarul total de persoane de sex masculin
  14. int main(){
  15. in>>n>>k>>zf>>zb;
  16. if(zf<=zb){
  17. npnb[1]=1;
  18. npabf[1]=1; // Trevor
  19. sb[0]=1; // Trevor
  20. sb[1]=1; // Trevor
  21. }else{
  22. swap(zf,zb);
  23. npnf[1]=1;
  24. npaff[1]=1; // Trevor
  25. sf[0]=1; // Trevor
  26. sf[1]=1; // Trevor
  27. }
  28. int vk=k/2;
  29. if(k%2==1)vk++;
  30. for(int i=2;i<=n+1;i++){
  31. if(i>zf){
  32. npnf[i]=npaff[i-zf];
  33. if(i>zb)npnf[i]+=npabf[i-zb];
  34. npaff[i]=npaff[i-zf]+npnf[i];
  35. npafb[i]=npafb[i-zf];//???
  36. if(i>vk*zf){
  37. npaff[i]-=npnf[i-vk*zf];
  38. if(npaff[i]<0)npaff[i]+=1234567;
  39. npafb[i]+=npnf[i-vk*zf];
  40. if(i>k*zf){
  41. npafb[i]-=npnf[i-k*zf];
  42. if(npafb[i]<0)npafb[i]+=1234567;
  43. }
  44. }
  45. }
  46. npnf[i]%=1234567;
  47. npaff[i]%=1234567;
  48. npafb[i]%=1234567;
  49. if(i>zf){
  50. npnb[i]=npafb[i-zf];
  51. if(i>zb){
  52. npnb[i]+=npabb[i-zb];
  53. npabb[i]=npabb[i-zb];
  54. npabf[i]=npabf[i-zb];
  55. }
  56. npabf[i]+=npnb[i];
  57. if(i>vk*zb){
  58. npabf[i]-=npnb[i-vk*zb];
  59. if(npabf[i]<0)npabf[i]+=1234567;
  60. npabb[i]+=npnb[i-vk*zb];
  61. if(i>k*zb){
  62. npabb[i]-=npnb[i-k*zb];
  63. if(npabb[i]<0)npabb[i]+=1234567;
  64. }
  65. }
  66. }
  67. npnb[i]%=1234567;
  68. npabf[i]%=1234567;
  69. npabb[i]%=1234567;
  70. sb[i]=sb[i-1]+npnb[i];
  71. sb[i]%=1234567;
  72. sf[i]=sf[i-1]+npnf[i];
  73. sf[i]%=1234567;
  74. }
  75. long long ntfbr=0;
  76. for(int i=1;i<=k;i++){
  77. if(n+1-(i-1)*zf>=1){
  78. if(n+1-i*zf-1>=0){
  79. long long dif=(sf[n+1-(i-1)*zf]-sf[n+1-i*zf]);
  80. if(dif<0)dif+=1234567;
  81. ntfbr=ntfbr+(k-i+1)*dif;
  82. }else{
  83. ntfbr=ntfbr+(k-i+1)*sf[n+1-(i-1)*zf];
  84. }
  85. ntfbr%=1234567;
  86. }
  87. if(n+1-(i-1)*zb>=1){
  88. if(n+1-i*zb-1>=0){
  89. long long dif=(sb[n+1-(i-1)*zb]-sb[n+1-i*zb]);
  90. if(dif<0)dif+=1234567;
  91. ntfbr=ntfbr+(k-i+1)*dif;
  92. }else{
  93. ntfbr=ntfbr+(k-i+1)*sb[n+1-(i-1)*zb];
  94. }
  95. ntfbr%=1234567;
  96. }
  97. }
  98. out << ntfbr << endl;
  99. return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment