/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 1ms 532.0 KiB
#3 Accepted 1ms 532.0 KiB
#4 Accepted 1ms 344.0 KiB
#5 Accepted 15ms 536.0 KiB
#6 Accepted 11ms 532.0 KiB
#7 Accepted 27ms 6.52 MiB
#8 Accepted 42ms 6.578 MiB
#9 Accepted 45ms 6.586 MiB
#10 Accepted 43ms 6.582 MiB
#11 Wrong Answer 14ms 580.0 KiB
#12 Wrong Answer 12ms 580.0 KiB

Code

#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define int long long
#define all(x) (x).begin(), (x).end()
#define f(i, n) for (int i = 0; i < n; i++)
#define trace(x) cerr << #x << ": " << x << '\n'
int32_t main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t;
    cin >> t;
    while (t--)
    {
        int n;
        cin >> n;
        vector<int> a(n);
        for (int i = 0; i < n; ++i)
            cin >> a[i];
        sort(a.rbegin(), a.rend());
        vector<int> p(n + 1, 0), dp1(n + 1), dp2(n + 1);
        for (int i = 0; i < n; ++i)
            p[i + 1] = p[i] + ((i & 1) ? -a[i] : a[i]);
        dp1[n] = dp2[n] = p[n];
        for (int k = n - 1; k >= 0; k--)
        {
            if ((k & 1) == 0)
            {
                dp1[k] = max(p[k], dp2[k + 1]);
                dp2[k] = dp2[k + 1];
            }
            else
            {
                dp2[k] = min(p[k], dp1[k + 1]);
                dp1[k] = dp1[k + 1];
            }
        }
        cout << dp1[0] << '\n';
    }
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1208 C. Game on Integer
Contest
Educational Round 1
Language
C++17 (G++ 13.2.0)
Submit At
2025-07-14 17:00:46
Judged At
2025-07-14 17:00:46
Judged By
Score
60
Total Time
45ms
Peak Memory
6.586 MiB