1894E - Freedom of Choice - CodeForces Solution


brute force data structures greedy implementation

Please click on ads to support us..

C++ Code:

//#pragma GCC optimize(3, "Ofast", "inline")
#include <bits/stdc++.h>

using namespace std;

#define endl "\n"
#define int long long

typedef long long ll;
typedef unsigned long long ull;
typedef long double db;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<vector<int>> vii;

const int N = 2e5 + 10, inf = 0x3f3f3f3f3f3f3f3f, mod = 998244353;

int m;
int l[N], r[N];
vii a(N), c(N);
int sum[N];
set<int> st;
map<int, int> mp;
map<int, int> mpmn;

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    int T;
    cin >> T;
    while (T--)
    {
        cin >> m;
        for (int i = 1; i <= m; i++)
            a[i].clear(), c[i].clear(), sum[i] = 0;
        st.clear();
        mp.clear();
        mpmn.clear();
        int suml = 0, sumr = 0;
        for (int i = 1; i <= m; i++)
        {
            int n;
            cin >> n >> l[i] >> r[i];
            suml += l[i], sumr += r[i];
            for (int j = 0; j < n; j++)
            {
                int x;
                cin >> x;
                a[i].push_back(x);
            }
            for (int j = 0; j < n; j++)
            {
                int x;
                cin >> x;
                c[i].push_back(x);
                sum[i] += x;
            }
        }
        for (int i = 1; i <= m; i++)
        {
            for (int j = 0; j < a[i].size(); j++)
                if (a[i][j] >= suml && a[i][j] <= sumr)
                {
                    st.insert(a[i][j]);
                    mp[a[i][j]] += max(c[i][j] - (sum[i] - r[i]), 0ll);
                    mpmn[a[i][j]] += max(c[i][j] - (sum[i] - l[i]), 0ll);
                }
        }
        if (st.size() < sumr - suml + 1)
        {
            cout << 0 << endl;
            continue;
        }
        int ans = INT64_MAX;
        for (auto it : st)
            ans = min(ans, max(mp[it] - (sumr - it), mpmn[it]));
        cout << ans << endl;
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

630D - Hexagons
1690D - Black and White Stripe
1688D - The Enchanted Forest
1674C - Infinite Replacement
712A - Memory and Crow
1676C - Most Similar Words
1681A - Game with Cards
151C - Win or Freeze
1585A - Life of a Flower
1662A - Organizing SWERC
466C - Number of Ways
1146A - Love "A"
1618D - Array and Operations
1255A - Changing Volume
1710C - XOR Triangle
415C - Mashmokh and Numbers
8A - Train and Peter
591A - Wizards' Duel
1703G - Good Key Bad Key
1705A - Mark the Photographer
1707A - Doremy's IQ
1706B - Making Towers
1325B - CopyCopyCopyCopyCopy
1649C - Weird Sum
1324B - Yet Another Palindrome Problem
525A - Vitaliy and Pie
879A - Borya's Diagnosis
1672B - I love AAAB
1673A - Subtle Substring Subtraction
1345A - Puzzle Pieces