답안 #746277

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
746277 2023-05-22T07:07:53 Z nguyentunglam 메기 농장 (IOI22_fish) C++17
9 / 100
290 ms 39724 KB
#include<bits/stdc++.h>
#define fi first
#define se second
#define endl "\n"
#define ii pair<int, int>
using namespace std;
const int N = 3e5 + 10;
int order[N];
vector<int> fish[N];
vector<long long> pref[N];
long long in[N], de[N], lastin[N], lastde[2][N];

long long calc(int h, int col) {
    if (h == -1 || col < 0 || fish[col].empty()) return 0;
    int idx = --upper_bound(fish[col].begin(), fish[col].end(), h) - fish[col].begin();
    return pref[col][idx];
}

long long max_weights(int n, int m, vector<int> X, vector<int> Y, vector<int> W) {

    for(int i = 0; i < n; i++) fish[i].push_back(0), pref[i].push_back(0);

    for(int i = 0; i < m; i++) order[i] = i;
    sort(order, order + m, [&] (const int &A, const int &B) {
         return Y[A] < Y[B];
         });

    for(int cur = 0; cur < m; cur++) {
        int i = order[cur];
        fish[X[i]].push_back(Y[i]);
        pref[X[i]].push_back(pref[X[i]].back() + W[i]);
    }

    for(int i = 0; i < n; i++) fish[i].push_back(n + 1);

    de[0] = calc(n, 1);

    for(int i = 1; i < n; i++) {
        for(int &preh : fish[i]) {
            int h = preh - 1;
            in[i] = max(in[i], in[i - 1] + calc(h, i - 1) - calc(h, i));
            de[i] = max(de[i], de[i - 1] - calc(h, i) + calc(h, i + 1));
            lastde[1][i] = max(lastde[1][i], de[i - 1] - calc(h, i) + calc(h, i + 1));
            lastde[0][i] = max(lastde[0][i], de[i - 1] - calc(h, i));
            lastin[i] = max(lastin[i], in[i] + calc(n, i) - calc(h, i));

            if (i > 2) {
                long long tmp = max(lastde[1][i - 2], lastde[0][i - 2] + calc(h, i - 1));
                in[i] = max(in[i], tmp - calc(h, i));
                de[i] = max(de[i], lastin[i - 2] + calc(n, i) - calc(h, i) + calc(h, i + 1));
            }
        }
    }
//    cout << max(in[n - 1], de[n - 1]);

    return max(in[n - 1], de[n - 1]);
}

#ifdef ngu
int main() {

    freopen ("task.inp", "r", stdin);
    freopen ("task.out", "w", stdout);

    int n, m; cin >> n >> m;
    vector<int> x(m), y(m), w(m);
    for(int i = 0; i < m; i++) cin >> x[i] >> y[i] >> w[i];

    long long ret = max_weights(n, m, x, y, w);
}
#endif // ngu


# 결과 실행 시간 메모리 Grader output
1 Correct 58 ms 26864 KB Output is correct
2 Correct 69 ms 28624 KB Output is correct
3 Correct 33 ms 24556 KB Output is correct
4 Correct 31 ms 24548 KB Output is correct
5 Correct 240 ms 37016 KB Output is correct
6 Correct 290 ms 39724 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 9 ms 14420 KB Output is correct
2 Correct 117 ms 30380 KB Output is correct
3 Correct 134 ms 32464 KB Output is correct
4 Correct 62 ms 26940 KB Output is correct
5 Correct 67 ms 28672 KB Output is correct
6 Correct 8 ms 14420 KB Output is correct
7 Correct 8 ms 14356 KB Output is correct
8 Correct 7 ms 14332 KB Output is correct
9 Correct 9 ms 14324 KB Output is correct
10 Correct 30 ms 24544 KB Output is correct
11 Correct 33 ms 24592 KB Output is correct
12 Correct 76 ms 26984 KB Output is correct
13 Correct 94 ms 28744 KB Output is correct
14 Correct 74 ms 27296 KB Output is correct
15 Correct 81 ms 28372 KB Output is correct
16 Correct 74 ms 27324 KB Output is correct
17 Correct 79 ms 28620 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 35 ms 24472 KB Output is correct
2 Correct 31 ms 24660 KB Output is correct
3 Incorrect 61 ms 25028 KB 1st lines differ - on the 1st token, expected: '21261825233649', found: '18225035644282'
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 14420 KB Output is correct
2 Correct 7 ms 14420 KB Output is correct
3 Correct 7 ms 14420 KB Output is correct
4 Correct 7 ms 14420 KB Output is correct
5 Correct 7 ms 14420 KB Output is correct
6 Correct 8 ms 14388 KB Output is correct
7 Correct 8 ms 14348 KB Output is correct
8 Correct 8 ms 14432 KB Output is correct
9 Incorrect 8 ms 14480 KB 1st lines differ - on the 1st token, expected: '216624184325', found: '160871916419'
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 14420 KB Output is correct
2 Correct 7 ms 14420 KB Output is correct
3 Correct 7 ms 14420 KB Output is correct
4 Correct 7 ms 14420 KB Output is correct
5 Correct 7 ms 14420 KB Output is correct
6 Correct 8 ms 14388 KB Output is correct
7 Correct 8 ms 14348 KB Output is correct
8 Correct 8 ms 14432 KB Output is correct
9 Incorrect 8 ms 14480 KB 1st lines differ - on the 1st token, expected: '216624184325', found: '160871916419'
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 14420 KB Output is correct
2 Correct 7 ms 14420 KB Output is correct
3 Correct 7 ms 14420 KB Output is correct
4 Correct 7 ms 14420 KB Output is correct
5 Correct 7 ms 14420 KB Output is correct
6 Correct 8 ms 14388 KB Output is correct
7 Correct 8 ms 14348 KB Output is correct
8 Correct 8 ms 14432 KB Output is correct
9 Incorrect 8 ms 14480 KB 1st lines differ - on the 1st token, expected: '216624184325', found: '160871916419'
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 35 ms 24472 KB Output is correct
2 Correct 31 ms 24660 KB Output is correct
3 Incorrect 61 ms 25028 KB 1st lines differ - on the 1st token, expected: '21261825233649', found: '18225035644282'
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 58 ms 26864 KB Output is correct
2 Correct 69 ms 28624 KB Output is correct
3 Correct 33 ms 24556 KB Output is correct
4 Correct 31 ms 24548 KB Output is correct
5 Correct 240 ms 37016 KB Output is correct
6 Correct 290 ms 39724 KB Output is correct
7 Correct 9 ms 14420 KB Output is correct
8 Correct 117 ms 30380 KB Output is correct
9 Correct 134 ms 32464 KB Output is correct
10 Correct 62 ms 26940 KB Output is correct
11 Correct 67 ms 28672 KB Output is correct
12 Correct 8 ms 14420 KB Output is correct
13 Correct 8 ms 14356 KB Output is correct
14 Correct 7 ms 14332 KB Output is correct
15 Correct 9 ms 14324 KB Output is correct
16 Correct 30 ms 24544 KB Output is correct
17 Correct 33 ms 24592 KB Output is correct
18 Correct 76 ms 26984 KB Output is correct
19 Correct 94 ms 28744 KB Output is correct
20 Correct 74 ms 27296 KB Output is correct
21 Correct 81 ms 28372 KB Output is correct
22 Correct 74 ms 27324 KB Output is correct
23 Correct 79 ms 28620 KB Output is correct
24 Correct 35 ms 24472 KB Output is correct
25 Correct 31 ms 24660 KB Output is correct
26 Incorrect 61 ms 25028 KB 1st lines differ - on the 1st token, expected: '21261825233649', found: '18225035644282'
27 Halted 0 ms 0 KB -