232082026-01-16 17:17:30AkosVagyokMunkákcpp17Wrong answer 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);
}

SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Wrong answer74ms2612 KiB
subtask20/10
3Accepted1ms316 KiB
4Wrong answer1ms316 KiB
5Wrong answer1ms316 KiB
6Wrong answer1ms512 KiB
7Wrong answer1ms316 KiB
subtask30/10
8Accepted1ms316 KiB
9Accepted1ms316 KiB
10Wrong answer1ms316 KiB
11Accepted1ms508 KiB
12Accepted1ms580 KiB
subtask40/10
13Accepted1ms316 KiB
14Wrong answer1ms316 KiB
15Wrong answer1ms316 KiB
16Wrong answer1ms512 KiB
17Wrong answer1ms316 KiB
18Wrong answer1ms316 KiB
19Wrong answer1ms316 KiB
20Wrong answer1ms508 KiB
21Wrong answer1ms316 KiB
22Wrong answer1ms400 KiB
subtask50/10
23Accepted1ms316 KiB
24Accepted1ms316 KiB
25Wrong answer1ms316 KiB
26Accepted1ms508 KiB
27Accepted1ms580 KiB
28Accepted1ms320 KiB
29Accepted1ms508 KiB
30Accepted1ms316 KiB
31Accepted1ms316 KiB
32Accepted1ms316 KiB
subtask60/10
33Accepted1ms316 KiB
34Wrong answer1ms316 KiB
35Wrong answer1ms316 KiB
36Wrong answer1ms512 KiB
37Wrong answer1ms316 KiB
38Accepted1ms316 KiB
39Accepted1ms316 KiB
40Wrong answer1ms316 KiB
41Accepted1ms508 KiB
42Accepted1ms580 KiB
43Wrong answer1ms316 KiB
44Wrong answer1ms316 KiB
45Wrong answer1ms508 KiB
46Wrong answer1ms316 KiB
47Wrong answer1ms400 KiB
48Accepted1ms320 KiB
49Accepted1ms508 KiB
50Accepted1ms316 KiB
51Accepted1ms316 KiB
52Accepted1ms316 KiB
53Accepted1ms316 KiB
54Accepted1ms548 KiB
55Accepted1ms400 KiB
56Accepted1ms316 KiB
57Accepted1ms316 KiB
subtask70/10
58Accepted1ms316 KiB
59Wrong answer1ms316 KiB
60Wrong answer1ms316 KiB
61Wrong answer1ms512 KiB
62Wrong answer1ms316 KiB
63Accepted1ms316 KiB
64Accepted1ms316 KiB
65Wrong answer1ms316 KiB
66Accepted1ms508 KiB
67Accepted1ms580 KiB
68Wrong answer1ms316 KiB
69Wrong answer1ms316 KiB
70Wrong answer1ms508 KiB
71Wrong answer1ms316 KiB
72Wrong answer1ms400 KiB
73Accepted1ms320 KiB
74Accepted1ms508 KiB
75Accepted1ms316 KiB
76Accepted1ms316 KiB
77Accepted1ms316 KiB
78Accepted1ms316 KiB
79Accepted1ms548 KiB
80Accepted1ms400 KiB
81Accepted1ms316 KiB
82Accepted1ms316 KiB
83Wrong answer41ms1588 KiB
84Wrong answer41ms1604 KiB
85Wrong answer41ms1588 KiB
86Wrong answer41ms1588 KiB
87Wrong answer43ms1588 KiB
subtask80/20
88Accepted1ms316 KiB
89Wrong answer1ms316 KiB
90Wrong answer1ms316 KiB
91Wrong answer1ms512 KiB
92Wrong answer1ms316 KiB
93Accepted1ms316 KiB
94Accepted1ms316 KiB
95Wrong answer1ms316 KiB
96Accepted1ms508 KiB
97Accepted1ms580 KiB
98Wrong answer1ms316 KiB
99Wrong answer1ms316 KiB
100Wrong answer1ms508 KiB
101Wrong answer1ms316 KiB
102Wrong answer1ms400 KiB
103Accepted1ms320 KiB
104Accepted1ms508 KiB
105Accepted1ms316 KiB
106Accepted1ms316 KiB
107Accepted1ms316 KiB
108Accepted1ms316 KiB
109Accepted1ms548 KiB
110Accepted1ms400 KiB
111Accepted1ms316 KiB
112Accepted1ms316 KiB
113Wrong answer41ms1588 KiB
114Wrong answer41ms1604 KiB
115Wrong answer41ms1588 KiB
116Wrong answer41ms1588 KiB
117Wrong answer43ms1588 KiB
118Wrong answer82ms2868 KiB
119Wrong answer83ms2944 KiB
120Wrong answer82ms2736 KiB
121Wrong answer82ms2868 KiB
122Wrong answer85ms2740 KiB
123Wrong answer83ms2768 KiB
124Wrong answer83ms2868 KiB
125Wrong answer85ms2764 KiB
126Wrong answer83ms2868 KiB
127Wrong answer83ms2888 KiB