Advertisement
a53

b_e_n_z_i_n_a_r_i_i_1

a53
Jul 25th, 2018
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.74 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define Int long long
  3. using namespace std;
  4. queue<pair<Int,Int>> q;
  5. Int n,x,s,r,sol;
  6.  
  7. inline Int val(Int L)
  8. {
  9. return (L*L+2*L+L%2)/4;
  10. }
  11.  
  12. inline Int progresion_sum(Int a1,Int r,Int n)
  13. {
  14. return n*(2*a1+(n-1)*r)/2;
  15. }
  16.  
  17. inline void updateQueue(Int x,Int n)
  18. {
  19. if(x==0)return;
  20. if(q.back().first==x)
  21. q.back().second+=n;
  22. else
  23. q.push(make_pair(x,n));
  24. }
  25.  
  26. int main()
  27. {
  28. cin>>n;
  29. q.push(make_pair(n,1));
  30. s=val(n);
  31. for(;q.size();q.pop())
  32. {
  33. tie(x,n)=q.front();
  34. r=val(x)-val(x/2)-val(x-x/2-1);
  35. sol+=n*(2*s-(n-1)*r)/2;
  36. s-=n*r;
  37. updateQueue(x/2,n);
  38. updateQueue(x-x/2-1,n);
  39. }
  40. cout<<sol;
  41. return 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement