Advertisement
tien_noob

MAXSUMSQ - LQDOJ

Jun 5th, 2021
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.32 KB | None | 0 0
  1. //Make CSP great again
  2. #include <bits/stdc++.h>
  3. #define TASK "TESTCODE"
  4. using namespace std;
  5. const int N = 1e5;
  6. int a[N + 1], n, q, s;
  7. multiset<int> Multiset;
  8. long long sumsquare = 0, sumnum = 0;
  9. long long Square(int u)
  10. {
  11.     return 1LL * u * u;
  12. }
  13. void read()
  14. {
  15.    cin >> n >> s;
  16.    for (int i = 1; i <= n; ++ i)
  17.    {
  18.        cin >> a[i];
  19.        Multiset.insert(a[i]);
  20.        sumsquare += Square(a[i]);
  21.        sumnum += a[i];
  22.    }
  23. }
  24. long long Answer()
  25. {
  26.     long long big = *Multiset.rbegin();
  27.     return sumsquare - Square(big) + Square(big + s - sumnum);
  28. }
  29. void solve()
  30. {
  31.    cout << Answer() << '\n';
  32.    cin >> q;
  33.    while (q--)
  34.    {
  35.        int i, x;
  36.        cin >> i >> x;
  37.        sumsquare = sumsquare - Square(a[i]) + Square(x);
  38.        sumnum = sumnum - a[i] + x;
  39.        auto it = Multiset.find(a[i]);
  40.        Multiset.erase(it);
  41.        Multiset.insert(x);
  42.        a[i] = x;
  43.        cout << Answer() << '\n';
  44.    }
  45. }
  46. int main()
  47. {
  48.     ios_base::sync_with_stdio(false);
  49.     cin.tie(nullptr);
  50.     //freopen(TASK".INP", "r", stdin);
  51.     //freopen(TASK".OUT", "w", stdout);
  52.     int t = 1;
  53.     bool typetest = false;
  54.     if (typetest)
  55.     {
  56.         cin >> t;
  57.     }
  58.     for (int __ = 1; __ <= t; ++ __)
  59.     {
  60.         cerr << "Case " << __ << ":" << '\n';
  61.         read();
  62.         solve();
  63.     }
  64. }
  65.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement