Advertisement
skimono

Untitled

Mar 11th, 2024
1,142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.91 KB | None | 0 0
  1. #pragma optimize ("O3");
  2. #define _CRT_SECURE_NO_WARNINGS
  3.  
  4. #include <iostream>
  5. #include <vector>
  6. #include <set>
  7. #include <algorithm>
  8. #include <map>
  9. #include <string>
  10. #include <unordered_map>
  11. #include <cassert>
  12. #include <bitset>
  13. #include <unordered_set>
  14.  
  15. using namespace std;
  16. #define int long long
  17. const int inf = 2e9;
  18.  
  19. void go(int a, int t, int& ans_a, int& ans_b) {
  20.     if (a % (int)2 == (int)0) {
  21.         int cnt = t / a;
  22.         int sum_progres = cnt * (cnt + (int)1) / (int)2;
  23.         ans_a += sum_progres * (a / (int)2);
  24.         ans_b += sum_progres * (a / (int)2);
  25.         int last = cnt * a - (int)1;
  26.         int len = t - last;
  27.         ans_a += (cnt + (int)1) * (len - len / 2);
  28.         ans_b += (cnt + (int)1) * (len / 2);
  29.     }
  30.     else {
  31.         int cnt = t / a;
  32.         int cnt1 = cnt / (int)2;
  33.         int cnt2 = cnt - cnt1;
  34.         int sum_progress;
  35.         sum_progress = (cnt2 * (cnt2 + (int)1)) / (int)2;
  36.         ans_a += sum_progress * (a - a / (int)2);
  37.         sum_progress = (cnt1 * (cnt1 + (int)1)) / (int)2;
  38.         ans_a += sum_progress * (a - a / (int)2);
  39.         sum_progress = (cnt2 * (cnt2 - (int)1)) / (int)2;
  40.         ans_a += sum_progress * (a / (int)2);
  41.         sum_progress = (cnt1 * (cnt1 + (int)1)) / (int)2;
  42.         ans_a += sum_progress * (a / (int)2);
  43.         sum_progress = (cnt2 * (cnt2 + (int)1)) / (int)2;
  44.         ans_b += sum_progress * (a / (int)2);
  45.         sum_progress = (cnt1 * (cnt1 + (int)1)) / (int)2;
  46.         ans_b += sum_progress * (a - a / (int)2);
  47.         sum_progress = (cnt1 * (cnt1 + (int)1)) / (int)2;
  48.         ans_b += sum_progress * (a / (int)2);
  49.         sum_progress = (cnt2 * (cnt2 - (int)1)) / (int)2;
  50.         ans_b += sum_progress * (a - a / (int)2);
  51.         int last = cnt * a - (int)1;
  52.         int len = t - last;
  53.         int len2 = max(len - (int)1, (int)0);
  54.         if (cnt1 == cnt2) {
  55.             ans_a += (cnt2 + (int)1) * (len - len / (int)2);
  56.             ans_a += (cnt1) * (len / (int)2);
  57.             ans_b += (cnt2 + (int)1) * (len / (int)2);
  58.             ans_b += (cnt1) * (len - len / (int)2);
  59.         }
  60.         else {
  61.             ans_a += (cnt1 + (int)1) * (len - len / (int)2);
  62.             ans_a += (cnt2) * (len / (int)2);
  63.             ans_b += (cnt2) * (len - len / (int)2);
  64.             ans_b += (cnt1 + (int)1) * (len / (int)2);
  65.         }
  66.     }
  67. }
  68.  
  69. void solve() {
  70.     int a, b, t;
  71.     cin >> a >> b >> t;
  72.     int ans_a = 0, ans_b = 0;
  73.     int c0 = 0, c1 = 0;
  74.     go(a, t, c0, c1);
  75.     ans_a += c0;
  76.     ans_b += c1;
  77.     c0 = 0, c1 = 0;
  78.     go(b, t, c0, c1);
  79.     ans_a += c1;
  80.     ans_b += c0;
  81.     cout << ans_a << " " << ans_b << endl;
  82. }
  83.  
  84. signed main() {
  85. #ifdef _DEBUG
  86.     freopen("input.txt", "r ", stdin);
  87.     freopen("output.txt", "w", stdout);
  88. #endif
  89.     ios_base::sync_with_stdio(0);
  90.     cin.tie(NULL);
  91.     cout.tie(NULL);
  92.     int t = 1;
  93.     //cin >> t;
  94.     while (t--) solve();
  95. }
  96. //Deisgned by skimono
  97.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement