232082026-01-16 17:17:30AkosVagyokMunkákcpp17Hibás válasz 0/8085ms2944 KiB
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
#include <algorithm>

using namespace std;
ifstream fin("be.in");
struct munka {
    int nap;
    int x;
    int y;
    int index;
};
bool comp(munka a, munka b) {
    return a.nap < b.nap;
}
vector <munka> t;
int n, m;
void be() {
    cin >> m >> n;
    t.resize(n + 1);
    for (int i = 1; i <= n; i++) {
        int a, b;
        cin >> a >> b;
        t[i].nap = a;
        t[i].x = b;
        t[i].y = a + 1;
        t[i].index = i;
    }
    sort(t.begin(), t.end(), comp);
}
void ki() {
    cout << endl << endl << endl << endl << endl;
    for (int i = 1; i <= n; i++) {
        cout << t[i].nap << ' ' << t[i].x << endl;
    }
    cout << endl << endl << endl << endl << endl;
}
struct munkaba {
    int os;
    int hossz;
};
bool compare(munkaba a, munkaba b) {
    return a.hossz < b.hossz;
}
vector <munkaba> seg;
vector <int> os;
vector <int> hossz;
void munka() {
    hossz.resize(n + 1);
    os.resize(n + 1);
    for (int i = 1; i <= n; i++) {
        hossz[i] = t[i].x;
        //cout << hossz[i] << ' '<<endl;
    }
    for (int i = 1; i <= n; i++) {
        //cout << i << ": ";
        for (int j = i - 1; j >= 1&&j>=i-2; j--) {
            //cout << j << ' ';
            if (t[j].y != t[i].nap && t[j].nap != t[i].nap) {
                munkaba  a;
                a.hossz = hossz[i] + hossz[j];
                a.os = j;
                seg.push_back(a);
            }
            else {
                if (t[os[j]].y != t[i].nap && t[os[j]].nap != t[i].nap) {
                    munkaba  a;
                    a.hossz = hossz[i] + hossz[os[j]];
                    a.os = os[j];
                    seg.push_back(a);
                }
            }
        }
        //cout << endl;
        if (!seg.empty()) {
            sort(seg.begin(), seg.end(), compare);
            os[i] = seg.back().os;
            hossz[i] = seg.back().hossz;
            seg.clear();
        }
    }

}
int k = 1;
void visszalepesszamolas(int kcs) {
    if (os[kcs]) {
        k++;
        visszalepesszamolas(os[kcs]);
    }
}
void visszalepes(int kcs) {
    if (os[kcs]) {
        cout << t[os[kcs]].index << ' ';
        visszalepes(os[kcs]);
    }
}
int main()
{
    be();
    //ki();
    munka();
    //cout << endl << endl << endl;
    int maxx = hossz[1];
    int index = 1;
    /*for (int i = 1; i <= n; i++) {
        cout << hossz[i] << ' ';
    }*/
   // cout << endl;
    for (int i = 1; i <= n; i++) {
        if (maxx < hossz[i]) {
            maxx = hossz[i];
            index = i;
        }
    }
    visszalepesszamolas(index);
    cout << maxx << ' ' << k << endl;
    cout << t[index].index << ' ';
    visszalepes(index);
}

RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Hibás válasz74ms2612 KiB
subtask20/10
3Elfogadva1ms316 KiB
4Hibás válasz1ms316 KiB
5Hibás válasz1ms316 KiB
6Hibás válasz1ms512 KiB
7Hibás válasz1ms316 KiB
subtask30/10
8Elfogadva1ms316 KiB
9Elfogadva1ms316 KiB
10Hibás válasz1ms316 KiB
11Elfogadva1ms508 KiB
12Elfogadva1ms580 KiB
subtask40/10
13Elfogadva1ms316 KiB
14Hibás válasz1ms316 KiB
15Hibás válasz1ms316 KiB
16Hibás válasz1ms512 KiB
17Hibás válasz1ms316 KiB
18Hibás válasz1ms316 KiB
19Hibás válasz1ms316 KiB
20Hibás válasz1ms508 KiB
21Hibás válasz1ms316 KiB
22Hibás válasz1ms400 KiB
subtask50/10
23Elfogadva1ms316 KiB
24Elfogadva1ms316 KiB
25Hibás válasz1ms316 KiB
26Elfogadva1ms508 KiB
27Elfogadva1ms580 KiB
28Elfogadva1ms320 KiB
29Elfogadva1ms508 KiB
30Elfogadva1ms316 KiB
31Elfogadva1ms316 KiB
32Elfogadva1ms316 KiB
subtask60/10
33Elfogadva1ms316 KiB
34Hibás válasz1ms316 KiB
35Hibás válasz1ms316 KiB
36Hibás válasz1ms512 KiB
37Hibás válasz1ms316 KiB
38Elfogadva1ms316 KiB
39Elfogadva1ms316 KiB
40Hibás válasz1ms316 KiB
41Elfogadva1ms508 KiB
42Elfogadva1ms580 KiB
43Hibás válasz1ms316 KiB
44Hibás válasz1ms316 KiB
45Hibás válasz1ms508 KiB
46Hibás válasz1ms316 KiB
47Hibás válasz1ms400 KiB
48Elfogadva1ms320 KiB
49Elfogadva1ms508 KiB
50Elfogadva1ms316 KiB
51Elfogadva1ms316 KiB
52Elfogadva1ms316 KiB
53Elfogadva1ms316 KiB
54Elfogadva1ms548 KiB
55Elfogadva1ms400 KiB
56Elfogadva1ms316 KiB
57Elfogadva1ms316 KiB
subtask70/10
58Elfogadva1ms316 KiB
59Hibás válasz1ms316 KiB
60Hibás válasz1ms316 KiB
61Hibás válasz1ms512 KiB
62Hibás válasz1ms316 KiB
63Elfogadva1ms316 KiB
64Elfogadva1ms316 KiB
65Hibás válasz1ms316 KiB
66Elfogadva1ms508 KiB
67Elfogadva1ms580 KiB
68Hibás válasz1ms316 KiB
69Hibás válasz1ms316 KiB
70Hibás válasz1ms508 KiB
71Hibás válasz1ms316 KiB
72Hibás válasz1ms400 KiB
73Elfogadva1ms320 KiB
74Elfogadva1ms508 KiB
75Elfogadva1ms316 KiB
76Elfogadva1ms316 KiB
77Elfogadva1ms316 KiB
78Elfogadva1ms316 KiB
79Elfogadva1ms548 KiB
80Elfogadva1ms400 KiB
81Elfogadva1ms316 KiB
82Elfogadva1ms316 KiB
83Hibás válasz41ms1588 KiB
84Hibás válasz41ms1604 KiB
85Hibás válasz41ms1588 KiB
86Hibás válasz41ms1588 KiB
87Hibás válasz43ms1588 KiB
subtask80/20
88Elfogadva1ms316 KiB
89Hibás válasz1ms316 KiB
90Hibás válasz1ms316 KiB
91Hibás válasz1ms512 KiB
92Hibás válasz1ms316 KiB
93Elfogadva1ms316 KiB
94Elfogadva1ms316 KiB
95Hibás válasz1ms316 KiB
96Elfogadva1ms508 KiB
97Elfogadva1ms580 KiB
98Hibás válasz1ms316 KiB
99Hibás válasz1ms316 KiB
100Hibás válasz1ms508 KiB
101Hibás válasz1ms316 KiB
102Hibás válasz1ms400 KiB
103Elfogadva1ms320 KiB
104Elfogadva1ms508 KiB
105Elfogadva1ms316 KiB
106Elfogadva1ms316 KiB
107Elfogadva1ms316 KiB
108Elfogadva1ms316 KiB
109Elfogadva1ms548 KiB
110Elfogadva1ms400 KiB
111Elfogadva1ms316 KiB
112Elfogadva1ms316 KiB
113Hibás válasz41ms1588 KiB
114Hibás válasz41ms1604 KiB
115Hibás válasz41ms1588 KiB
116Hibás válasz41ms1588 KiB
117Hibás válasz43ms1588 KiB
118Hibás válasz82ms2868 KiB
119Hibás válasz83ms2944 KiB
120Hibás válasz82ms2736 KiB
121Hibás válasz82ms2868 KiB
122Hibás válasz85ms2740 KiB
123Hibás válasz83ms2768 KiB
124Hibás válasz83ms2868 KiB
125Hibás válasz85ms2764 KiB
126Hibás válasz83ms2868 KiB
127Hibás válasz83ms2888 KiB