Advertisement
a53

B_e_n_z_i_n_a_r_i_1

a53
Jun 4th, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 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. inline Int val(Int L)
  7. {
  8. return (L*L+2*L+L%2)/4;
  9. }
  10. inline Int progresion_sum(Int a1,Int r,Int n)
  11. {
  12. return n*(2*a1+(n-1)*r)/2;
  13. }
  14. inline void updateQueue(Int x,Int n)
  15. {
  16. if(x==0)return;
  17. if(q.back().first==x)
  18. q.back().second+=n;
  19. else
  20. q.push(make_pair(x,n));
  21. }
  22. int main()
  23. {
  24. cin>>n;
  25. q.push(make_pair(n,1));
  26. s=val(n);
  27. for(;q.size();q.pop())
  28. {
  29. tie(x,n)=q.front();
  30. r=val(x)-val(x/2)-val(x-x/2-1);
  31. sol+=n*(2*s-(n-1)*r)/2;
  32. s-=n*r;
  33. updateQueue(x/2,n);
  34. updateQueue(x-x/2-1,n);
  35. }
  36. cout<<sol;
  37. return 0;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement