Solutions for Codeforces Round 899 Division 2 Problems

Problem A: Minimum Non-Conflicting Value Sequence

Given a sequence of intgeers, find the smallest positive integer that can be added to make all elements distinct while maintaining increasing order.

#include<iostream>
#include<vector>
using namespace std;

int find_min_increment(vector<int>& nums) {
    int current = 1;
    for(int num : nums) {
        if(current == num) current++;
        current++;
    }
    return current - 1;
}

int main() {
    int test_cases;
    cin >> test_cases;
    while(test_cases--) {
        int n;
        cin >> n;
        vector<int> arr(n);
        for(int i = 0; i < n; i++) cin >> arr[i];
        cout << find_min_increment(arr) << endl;
    }
    return 0;
}

Problem B: Maximum Unique Set Union

Given multiple sets of integers, determine the maximum number of unique elements obtainable by excluding atleast one set from the collection.

#include<iostream>
#include<vector>
#include<unordered_set>
using namespace std;

int max_unique_elements(vector<vector<int>>& sets) {
    int max_count = 0;
    for(int exclude = 0; exclude < sets.size(); exclude++) {
        unordered_set<int> combined;
        for(int i = 0; i < sets.size(); i++) {
            if(i == exclude) continue;
            for(int num : sets[i]) {
                combined.insert(num);
            }
        }
        max_count = max(max_count, (int)combined.size());
    }
    return max_count;
}

int main() {
    int test_cases;
    cin >> test_cases;
    while(test_cases--) {
        int n;
        cin >> n;
        vector<vector<int>> sets(n);
        for(int i = 0; i < n; i++) {
            int size;
            cin >> size;
            sets[i].resize(size);
            for(int j = 0; j < size; j++) {
                cin >> sets[i][j];
            }
        }
        cout << max_unique_elements(sets) << endl;
    }
    return 0;
}

Tags: competitive-programming Codeforces algorithms cpp

Posted on Sat, 01 Aug 2026 16:13:35 +0000 by chaffinator