248642026-02-16 09:56:07ubormaciFagyasztócpp17Hibás válasz 30/75112ms820 KiB
#include <iostream>
#include <algorithm> // for sort, mainly
#include <vector>
#include <map>
#include <set>
#include <cmath>
#include <array>
#include <string>
#include <cstdio>
#include <iterator>
#include <unordered_set>
#include <cstdint> // for int64_t, int32_t, etc
#include <queue>
#include <stack>
#include <deque>
#include <numeric> // gcd, lcm
#include <fstream>
#include <bitset> // for bitset
#include <iomanip>
#include <cassert> // for set with custom ordering
#include <type_traits> // for set with custom ordering
#include <utility> // for swap, forward, etc
using namespace std;

#pragma GCC optimize("O2")
// #pragma GCC optimize("O1","O2","O3","Ofast","unroll-loops")
// #pragma GCC target("sse","sse2","sse3","sse4.1","sse4.2","avx","avx2","fma")

template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { return os << '(' << p.first << ", " << p.second << ')'; }
template<typename T_container, typename T = typename enable_if<!is_same<T_container, string>::value, typename T_container::value_type>::type> ostream& operator<<(ostream &os, const T_container &v) { os << '{'; string sep; for (const T &x : v) os << sep << x, sep = ", "; return os << '}'; }
void dbg_out() { cout << endl; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T) { cout << ' ' << H; dbg_out(T...); }
#ifdef LOCAL
#define dbg(...) cout << "(" << #__VA_ARGS__ << "):", dbg_out(__VA_ARGS__)
#else
#define dbg(...)
#endif

/*

notes:

int64_t
stoi(string s) -> string to int
to_string() -> int (or else) to string

vector declaration:
vector<ll> v(n, 0)
vector<vector<ll>> v(n, vector<ll>(n, 0));

{if statement} ? {truth value} : {false value}

#ifdef LOCAL
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
#endif

std::lcm(ll a, ll b), std::gcd(int a, int b)

cout << fixed << setprecision(n);

set with custom ordering
set<ll, decltype(&cmp)> qu(cmp);

*/

typedef int64_t ll;

map<ll, set<pair<ll,ll>>> mp;
map<ll,ll> qit;

ll getfood(ll currday, ll minq, ll maxd) {

    for(ll i = currday; i <= maxd; i++) {

        if(mp[i].empty()) {
            continue;
        }

        // let's check if there's a minq element

        auto o = mp[i].lower_bound({minq, 0});
        if(o == mp[i].end()) {
            continue;
        }

        auto h = *o;
        mp[i].erase(o);

        return h.second;
    }
    
    return -1;
}

void solve() {

	ll n;
	cin >> n;

	vector<pair<ll,ll>> v(n+1, {0,0});

    ll maxtill = 0;

	for(ll i = 1; i <= n; i++) {
		ll till, quality;
		cin >> till >> quality;
		if(quality < 4) {
			continue;
		}
		mp[till].insert({quality,i});
        qit[till] = 0;

		v[i] = {till, quality};
        
        maxtill = max(till, maxtill);
    }

    vector<pair<ll,ll>> res;

    for(ll i = 1; i <= maxtill; i++) {

        ll a = getfood(i, 4, maxtill);

        if(a == -1) {
            break;
        }

        ll nextmin = 4;

        if(v[a].second == 4) {
            nextmin = 5;
        }

        ll b = getfood(i, nextmin, maxtill);

        if(b == -1) {
            break;
        }

        res.push_back({a, b});
    }

    cout << res.size() << "\n";
    for(const auto & [x, y] : res) {
        cout << x << " " << y << "\n";
    }
}

int main()
{
	std::ios_base::sync_with_stdio(false);
	//cin.tie(nullptr);
	//cout.tie(nullptr);

	solve();

	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
subtask210/10
2Elfogadva1ms316 KiB
3Elfogadva1ms316 KiB
4Elfogadva1ms316 KiB
5Elfogadva1ms500 KiB
6Elfogadva1ms500 KiB
7Elfogadva1ms316 KiB
8Elfogadva1ms316 KiB
9Elfogadva1ms316 KiB
10Elfogadva1ms316 KiB
11Elfogadva1ms316 KiB
subtask320/20
12Elfogadva1ms316 KiB
13Elfogadva1ms352 KiB
14Elfogadva1ms316 KiB
15Elfogadva1ms316 KiB
16Elfogadva1ms332 KiB
17Elfogadva3ms316 KiB
18Elfogadva4ms316 KiB
19Elfogadva2ms316 KiB
20Elfogadva2ms316 KiB
21Elfogadva6ms564 KiB
22Elfogadva4ms576 KiB
23Elfogadva30ms668 KiB
24Elfogadva27ms712 KiB
25Elfogadva14ms564 KiB
26Elfogadva2ms564 KiB
27Elfogadva18ms728 KiB
28Elfogadva28ms564 KiB
29Elfogadva8ms612 KiB
30Elfogadva8ms528 KiB
31Elfogadva20ms564 KiB
subtask40/15
32Elfogadva1ms500 KiB
33Elfogadva1ms316 KiB
34Elfogadva1ms316 KiB
35Hibás válasz2ms488 KiB
36Elfogadva17ms552 KiB
37Elfogadva14ms536 KiB
38Hibás válasz4ms316 KiB
39Elfogadva3ms564 KiB
40Elfogadva14ms544 KiB
41Elfogadva59ms660 KiB
42Elfogadva34ms564 KiB
43Hibás válasz86ms704 KiB
44Elfogadva4ms568 KiB
45Elfogadva37ms584 KiB
46Elfogadva112ms704 KiB
subtask50/15
47Elfogadva2ms512 KiB
48Elfogadva4ms316 KiB
49Hibás válasz4ms316 KiB
50Elfogadva2ms316 KiB
51Elfogadva4ms516 KiB
52Elfogadva1ms316 KiB
53Hibás válasz1ms508 KiB
54Elfogadva4ms668 KiB
55Elfogadva1ms316 KiB
56Elfogadva6ms508 KiB
57Elfogadva3ms316 KiB
58Hibás válasz2ms316 KiB
59Hibás válasz4ms552 KiB
60Elfogadva1ms316 KiB
61Elfogadva2ms316 KiB
subtask60/15
62Elfogadva4ms568 KiB
63Elfogadva12ms564 KiB
64Elfogadva26ms692 KiB
65Hibás válasz35ms748 KiB
66Elfogadva37ms564 KiB
67Elfogadva3ms564 KiB
68Elfogadva13ms600 KiB
69Hibás válasz9ms604 KiB
70Hibás válasz9ms564 KiB
71Hibás válasz23ms660 KiB
72Elfogadva12ms620 KiB
73Hibás válasz17ms820 KiB
74Elfogadva18ms564 KiB
75Elfogadva9ms712 KiB
76Elfogadva6ms572 KiB