Submission #627690

# Submission time Handle Problem Language Result Execution time Memory
627690 2022-08-12T18:49:25 Z tutis Catfish Farm (IOI22_fish) C++17
35 / 100
1000 ms 2097152 KB
#include "fish.h"

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y,
                      std::vector<int> W) {
    vector<pair<int, ll>>P[N];
    for (int i = 0; i < M; i++)
        P[X[i]].push_back({Y[i], W[i]});
    for (int i = 0; i < N; i++)
        sort(P[i].begin(), P[i].end());
    for (int i = 0; i < N; i++)
    {
        P[i].push_back({N, 0});
        for (int j = 1; j < (int)P[i].size(); j++)
            P[i][j].second += P[i][j - 1].second;
    }
    int ret = 0;
    ll dp[N];
    ll u[N][N];
    ll d[N][N];
    ll u1[N][N];
    ll d1[N][N];
    auto get = [&](int x, int y)->ll
    {
        if (x < 0 || x >= N)
            return 0;
        auto it = lower_bound(P[x].begin(), P[x].end(), make_pair(y + 1, -1ll));
        if (it == P[x].begin())
            return 0;
        it--;
        return it->second;
    };
    for (int x = 0; x < N; x++)
    {
        dp[x] = 0;
        for (int y = 0; y < N; y++)
        {
            u[x][y] = d[x][y] = 0;
            u1[x][y] = u[x][y] - get(x, y);
            d1[x][y] = d[x][y] + get(x + 1, y);
        }
        ll sum = 0;
        int i = 0;
        if (x == 0)
            continue;
        for (int y = 0; y < N; y++)
        {
            u[x][y] = dp[x - 1];
            u[x][y] = max(u[x][y], get(x - 1, y) + (x - 2 >= 0 ? dp[x - 2] : 0ll));
            u[x][y] -= get(x - 1, y);
            for (int y1 = 0; y1 <= y; y1++)
                u[x][y] = max(u[x][y], u1[x - 1][y1]);
            u[x][y] += get(x - 1, y);
        }
        for (int y = 0; y < N; y++)
            u1[x][y] = u[x][y] - get(x, y);
        d[x][N - 1] = u[x][N - 1];
        for (int y = N - 1; y >= 0; y--)
        {
            d[x][y] += get(x, y);
            for (int y1 = y; y1 < N; y1++)
                d[x][y] = max(d[x][y], d1[x - 1][y1]);
            d[x][y] -= get(x, y);
        }
        for (int y = N - 1; y >= 0; y--)
            d1[x][y] = d[x][y] + get(x + 1, y);
        dp[x] = dp[x - 1];
        for (int y = 0; y < N; y++)
        {
            dp[x] = max(dp[x], get(x, y) + u[x - 1][y]);
            dp[x] = max(dp[x], get(x, y) + d[x - 1][y]);
            dp[x] = max(dp[x], u[x][y]);
            dp[x] = max(dp[x], d[x][y]);
        }
    }
    return dp[N - 1];
}

Compilation message

fish.cpp: In function 'long long int max_weights(int, int, std::vector<int>, std::vector<int>, std::vector<int>)':
fish.cpp:44:12: warning: unused variable 'sum' [-Wunused-variable]
   44 |         ll sum = 0;
      |            ^~~
fish.cpp:45:13: warning: unused variable 'i' [-Wunused-variable]
   45 |         int i = 0;
      |             ^
fish.cpp:19:9: warning: unused variable 'ret' [-Wunused-variable]
   19 |     int ret = 0;
      |         ^~~
# Verdict Execution time Memory Grader output
1 Runtime error 822 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Runtime error 823 ms 2097152 KB Execution killed with signal 9
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 773 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 296 KB Output is correct
9 Correct 6 ms 1064 KB Output is correct
10 Correct 34 ms 3284 KB Output is correct
11 Correct 7 ms 1072 KB Output is correct
12 Correct 35 ms 3100 KB Output is correct
13 Correct 1 ms 432 KB Output is correct
14 Correct 34 ms 3172 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 296 KB Output is correct
9 Correct 6 ms 1064 KB Output is correct
10 Correct 34 ms 3284 KB Output is correct
11 Correct 7 ms 1072 KB Output is correct
12 Correct 35 ms 3100 KB Output is correct
13 Correct 1 ms 432 KB Output is correct
14 Correct 34 ms 3172 KB Output is correct
15 Correct 34 ms 3136 KB Output is correct
16 Correct 3 ms 632 KB Output is correct
17 Correct 78 ms 5728 KB Output is correct
18 Correct 71 ms 6340 KB Output is correct
19 Correct 65 ms 6192 KB Output is correct
20 Correct 72 ms 6092 KB Output is correct
21 Correct 69 ms 6168 KB Output is correct
22 Correct 102 ms 9020 KB Output is correct
23 Correct 55 ms 3728 KB Output is correct
24 Correct 71 ms 4900 KB Output is correct
25 Correct 38 ms 3188 KB Output is correct
26 Correct 43 ms 3668 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 296 KB Output is correct
9 Correct 6 ms 1064 KB Output is correct
10 Correct 34 ms 3284 KB Output is correct
11 Correct 7 ms 1072 KB Output is correct
12 Correct 35 ms 3100 KB Output is correct
13 Correct 1 ms 432 KB Output is correct
14 Correct 34 ms 3172 KB Output is correct
15 Correct 34 ms 3136 KB Output is correct
16 Correct 3 ms 632 KB Output is correct
17 Correct 78 ms 5728 KB Output is correct
18 Correct 71 ms 6340 KB Output is correct
19 Correct 65 ms 6192 KB Output is correct
20 Correct 72 ms 6092 KB Output is correct
21 Correct 69 ms 6168 KB Output is correct
22 Correct 102 ms 9020 KB Output is correct
23 Correct 55 ms 3728 KB Output is correct
24 Correct 71 ms 4900 KB Output is correct
25 Correct 38 ms 3188 KB Output is correct
26 Correct 43 ms 3668 KB Output is correct
27 Execution timed out 1102 ms 282440 KB Time limit exceeded
28 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 773 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 822 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -