225392026-01-15 10:50:46sklausMunkákcpp17Időlimit túllépés 60/80689ms1784 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>

using namespace std;

struct meg {
    int nap;
    int hasz;
    int sorszam;
};

bool h(meg a, meg b) {
    if (a.nap == b.nap) return a.hasz < b.hasz;
    else return a.nap < b.nap;
}

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

    int n, m;
    cin >> n >> m;

    vector<meg> v(m);
    for (int i = 0; i < m; i++) {
        cin >> v[i].nap >> v[i].hasz;
        v[i].sorszam = i;
    }


    sort(v.begin(), v.end(), h);
    for (int i = 0; i < (int)v.size() - 1; i++) {
        if (v[i].nap == v[i + 1].nap) {
            v.erase(v.begin() + i);
            i--;
        }
    }


    for (int i = 0; i < (int)v.size() - 1; i++) {
        if (v[i + 1].nap - v[i].nap > 1) {
            v.insert(v.begin() + i + 1, {v[i].nap + 1, 0, -1});
        }
    }

    vector<int> dp(v.size());
    vector<bool> is(v.size(), false);
    vector<int> previ(v.size(), -1);

    for (int i = 0; i < v.size(); i++) {

        int elozo = (i > 0) ? dp[i - 1] : 0;


        int ketto_ezelott = (i > 1) ? dp[i - 2] : 0;

        int aktualis_opcio = v[i].hasz + ketto_ezelott;

        if (aktualis_opcio > elozo) {
            dp[i] = aktualis_opcio;
            is[i] = true;
            previ[i] = i - 2;
        } else {
            dp[i] = elozo;
            is[i] = false;
        }
    }



    if (v.empty()) {
        cout << "0 0" << endl;
        return 0;
    }

    cout << dp.back() << " ";


    vector<int> napok;
    int most = v.size() - 1;


    while (most >= 0) {
        if (is[most]) {

            if (v[most].hasz > 0) {
                napok.push_back(v[most].sorszam + 1);
            }
            most = previ[most];
        } else {
            most--;
        }
    }

    cout << napok.size() << endl;
    for (int i = napok.size() - 1; i >= 0; i--) {
        cout << napok[i] << " ";
    }

    return 0;
}

RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Időlimit túllépés689ms1780 KiB
subtask210/10
3Elfogadva1ms316 KiB
4Elfogadva2ms316 KiB
5Elfogadva1ms508 KiB
6Elfogadva1ms512 KiB
7Elfogadva1ms316 KiB
subtask310/10
8Elfogadva1ms316 KiB
9Elfogadva1ms316 KiB
10Elfogadva1ms508 KiB
11Elfogadva1ms316 KiB
12Elfogadva1ms316 KiB
subtask410/10
13Elfogadva1ms316 KiB
14Elfogadva2ms316 KiB
15Elfogadva1ms508 KiB
16Elfogadva1ms512 KiB
17Elfogadva1ms316 KiB
18Elfogadva1ms512 KiB
19Elfogadva1ms500 KiB
20Elfogadva1ms316 KiB
21Elfogadva1ms316 KiB
22Elfogadva1ms420 KiB
subtask510/10
23Elfogadva1ms316 KiB
24Elfogadva1ms316 KiB
25Elfogadva1ms508 KiB
26Elfogadva1ms316 KiB
27Elfogadva1ms316 KiB
28Elfogadva2ms316 KiB
29Elfogadva2ms500 KiB
30Elfogadva1ms756 KiB
31Elfogadva2ms800 KiB
32Elfogadva1ms564 KiB
subtask610/10
33Elfogadva1ms316 KiB
34Elfogadva2ms316 KiB
35Elfogadva1ms508 KiB
36Elfogadva1ms512 KiB
37Elfogadva1ms316 KiB
38Elfogadva1ms316 KiB
39Elfogadva1ms316 KiB
40Elfogadva1ms508 KiB
41Elfogadva1ms316 KiB
42Elfogadva1ms316 KiB
43Elfogadva1ms512 KiB
44Elfogadva1ms500 KiB
45Elfogadva1ms316 KiB
46Elfogadva1ms316 KiB
47Elfogadva1ms420 KiB
48Elfogadva2ms316 KiB
49Elfogadva2ms500 KiB
50Elfogadva1ms756 KiB
51Elfogadva2ms800 KiB
52Elfogadva1ms564 KiB
53Elfogadva1ms568 KiB
54Elfogadva1ms564 KiB
55Elfogadva1ms564 KiB
56Elfogadva1ms612 KiB
57Elfogadva1ms564 KiB
subtask710/10
58Elfogadva1ms316 KiB
59Elfogadva2ms316 KiB
60Elfogadva1ms508 KiB
61Elfogadva1ms512 KiB
62Elfogadva1ms316 KiB
63Elfogadva1ms316 KiB
64Elfogadva1ms316 KiB
65Elfogadva1ms508 KiB
66Elfogadva1ms316 KiB
67Elfogadva1ms316 KiB
68Elfogadva1ms512 KiB
69Elfogadva1ms500 KiB
70Elfogadva1ms316 KiB
71Elfogadva1ms316 KiB
72Elfogadva1ms420 KiB
73Elfogadva2ms316 KiB
74Elfogadva2ms500 KiB
75Elfogadva1ms756 KiB
76Elfogadva2ms800 KiB
77Elfogadva1ms564 KiB
78Elfogadva1ms568 KiB
79Elfogadva1ms564 KiB
80Elfogadva1ms564 KiB
81Elfogadva1ms612 KiB
82Elfogadva1ms564 KiB
83Elfogadva259ms1540 KiB
84Elfogadva261ms1532 KiB
85Elfogadva259ms1532 KiB
86Elfogadva259ms1536 KiB
87Elfogadva259ms1552 KiB
subtask80/20
88Elfogadva1ms316 KiB
89Elfogadva2ms316 KiB
90Elfogadva1ms508 KiB
91Elfogadva1ms512 KiB
92Elfogadva1ms316 KiB
93Elfogadva1ms316 KiB
94Elfogadva1ms316 KiB
95Elfogadva1ms508 KiB
96Elfogadva1ms316 KiB
97Elfogadva1ms316 KiB
98Elfogadva1ms512 KiB
99Elfogadva1ms500 KiB
100Elfogadva1ms316 KiB
101Elfogadva1ms316 KiB
102Elfogadva1ms420 KiB
103Elfogadva2ms316 KiB
104Elfogadva2ms500 KiB
105Elfogadva1ms756 KiB
106Elfogadva2ms800 KiB
107Elfogadva1ms564 KiB
108Elfogadva1ms568 KiB
109Elfogadva1ms564 KiB
110Elfogadva1ms564 KiB
111Elfogadva1ms612 KiB
112Elfogadva1ms564 KiB
113Elfogadva259ms1540 KiB
114Elfogadva261ms1532 KiB
115Elfogadva259ms1532 KiB
116Elfogadva259ms1536 KiB
117Elfogadva259ms1552 KiB
118Időlimit túllépés685ms1588 KiB
119Időlimit túllépés685ms1780 KiB
120Időlimit túllépés685ms1780 KiB
121Időlimit túllépés685ms1588 KiB
122Időlimit túllépés685ms1588 KiB
123Időlimit túllépés686ms1436 KiB
124Időlimit túllépés686ms1588 KiB
125Időlimit túllépés686ms1784 KiB
126Időlimit túllépés686ms1592 KiB
127Időlimit túllépés686ms1588 KiB