754D - Fedor and coupons - CodeForces Solution


binary search data structures greedy sortings *2100

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>

using namespace std;

int n, k, l[300001], r[300001];

vector <pair <int, long long>> v;
bool possible (long long len) {
    v.clear();

    for (int i = 1; i <= n; ++ i) {
        if (r[i] - len + 1 < l[i]) {
            continue;
        }
        
        v.push_back ({l[i], 0});
        v.push_back ({r[i] - len + 2, 1});
    }

    sort (v.begin(), v.end());

    int sum = 0;
    for (int i = 0; i < (int)v.size() - 1; ++ i) {
        if (v[i].second) {
            -- sum;
        } else {
            ++ sum;
        }
        
        if (v[i].first != v[i + 1].first) {
            if (sum >= k) {
                return true;
            }
        }
    }

    return false;
}

void result (long long len) {
    cout << len << "\n";
    
    map <int, int> mp;

    for (int i = 1; i <= n; ++ i) {
        if (r[i] - len + 1 < l[i]) {
            continue;
        }

        mp[l[i]] ++;
        mp[r[i] - len + 2] --;
    }

    int sum = 0;
    int id = -1;

    for (auto it : mp) {
        sum += it.second;

        if (sum >= k) {
            id = it.first;
            break;
        }
    }

    if (id == -1) {
        for (int i = 1; i <= k; ++ i) {
            cout << i << " ";
        }
        cout << "\n";
        exit(0);
    }

    for (int i = 1; i <= n && k; ++ i) {
        if (l[i] <= id && id <= r[i] - len + 2) {
            cout << i << " ";
            -- k;
        }
    }

    cout << "\n";
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin >> n >> k;
    for (int i = 1; i <= n; ++ i) {
        cin >> l[i] >> r[i];
    }

    long long l = 0, r = 2e9 + 1;
    while (l < r) {
        long long mid = (l + r + 1) >> 1;

        if (possible (mid)) {
            l = mid;
        } else {
            r = mid - 1;
        }
    }

    result (l);

    return 0;
}/*1690054665.6251605*/


Comments

Submit
0 Comments
More Questions

579A - Raising Bacteria
723A - The New Year Meeting Friends
302A - Eugeny and Array
1638B - Odd Swap Sort
1370C - Number Game
1206B - Make Product Equal One
131A - cAPS lOCK
1635A - Min Or Sum
474A - Keyboard
1343A - Candies
1343C - Alternating Subsequence
1325A - EhAb AnD gCd
746A - Compote
318A - Even Odds
550B - Preparing Olympiad
939B - Hamster Farm
732A - Buy a Shovel
1220C - Substring Game in the Lesson
452A - Eevee
1647B - Madoka and the Elegant Gift
1408A - Circle Coloring
766B - Mahmoud and a Triangle
1618C - Paint the Array
469A - I Wanna Be the Guy
1294A - Collecting Coins
1227A - Math Problem
349A - Cinema Line
47A - Triangular numbers
1516B - AGAGA XOOORRR
1515A - Phoenix and Gold