Submission #654806

# Submission time Handle Problem Language Result Execution time Memory
654806 2022-11-01T16:56:33 Z t6twotwo Catfish Farm (IOI22_fish) C++17
44 / 100
1000 ms 39388 KB
#include "fish.h"
#include <bits/stdc++.h>
using namespace std;
const long long inf = -(1LL << 50);
long long max_weights(int n, int m, vector<int> x, vector<int> y, vector<int> w) {
  vector<vector<int>> b(n);
  for (int i = 0; i < m; i++) {
    b[x[i]].push_back(i);
  }
  vector d(n, vector<int>{-1});
  vector<vector<int>> r(n), p(n);
  for (int i = 0; i < n; i++) {
    sort(b[i].begin(), b[i].end(), [&](int j, int k) {
      return y[j] < y[k];
    });
    for (int j : b[i]) {
      r[i].push_back(y[j]);
      p[i].push_back(w[j]);
      if (i > 0) {
        d[i - 1].push_back(y[j]);
      }
      if (i < n - 1) {
        d[i + 1].push_back(y[j]);
      }
    }
  }
  vector<vector<long long>> ssum(n), psum(n);
  for (int i = 0; i < n; i++) {
    int k = p[i].size();
    psum[i] = vector<long long>(k + 1);
    ssum[i] = vector<long long>(k + 1);
    for (int j = 0; j < k; j++) {
      psum[i][j + 1] = psum[i][j] + p[i][j];
    }
    for (int j = k - 1; j >= 0; j--) {
      ssum[i][j] = ssum[i][j + 1] + p[i][j];
    }
  }
  auto suf_sum = [&](int i, int x) -> long long {
    if (i == -1) {
      return 0;
    }
    long long ans = 0;
    for (int j = 0; j < p[i].size(); j++) {
      if (r[i][j] > x) {
        ans += p[i][j];
      }
    }
    return ans;
    return ssum[i][upper_bound(r[i].begin(), r[i].end(), x) - r[i].begin()];
  };
  auto pre_sum = [&](int i, int x) -> long long {
    if (i == -1) {
      return 0;
    }
    long long ans = 0;
    for (int j = 0; j < p[i].size(); j++) {
      if (r[i][j] <= x) {
        ans += p[i][j];
      }
    }
    return ans;
    return psum[i][upper_bound(r[i].begin(), r[i].end(), x) - r[i].begin()];
  };
  vector<int> e{-1};
  vector<array<long long, 2>> dp{{0, 0}};
  for (int i = 0; i < n; i++) {
    auto pd = dp;
    int l = d[i].size();
    dp = vector(l, array<long long, 2>{inf, inf});
    int k = pd.size();
    vector<long long> pmax(k + 1, inf);
    for (int j = 0; j < k; j++) {
      pmax[j + 1] = max(pmax[j], pd[j][0] + suf_sum(i - 1, e[j]));
    }
    vector<long long> smax(k + 1, inf);
    for (int j = k - 1; j >= 0; j--) {
      smax[j] = max(smax[j + 1], max(pd[j][0], pd[j][1]) - suf_sum(i, e[j]));
    }
    for (int j = 0; j < k; j++) {
      dp[0][0] = max(dp[0][0], max(pd[j][0], pd[j][1]));
      dp[0][1] = max(dp[0][1], max(pd[j][0], pd[j][1]) + pre_sum(i, e[j]));
    }
    for (int j = 1; j < l; j++) {
      dp[j][0] = max({dp[j][0], max(pd[0][1], pd[0][0] + pre_sum(i - 1, d[i][j])), pmax[upper_bound(e.begin(), e.end(), d[i][j]) - e.begin()] - suf_sum(i - 1, d[i][j])});
      dp[j][1] = max({dp[j][1], max(pd[0][1], pd[0][0] + pre_sum(i - 1, d[i][j])), smax[lower_bound(e.begin(), e.end(), d[i][j]) - e.begin()] + suf_sum(i, d[i][j])});
    }
    swap(e, d[i]);
  }
  long long ans = inf;
  for (auto v : dp) {
    ans = max(ans, max(v[0], v[1]));
  }
  return ans;
}

Compilation message

fish.cpp: In lambda function:
fish.cpp:44:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |     for (int j = 0; j < p[i].size(); j++) {
      |                     ~~^~~~~~~~~~~~~
fish.cpp: In lambda function:
fish.cpp:57:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |     for (int j = 0; j < p[i].size(); j++) {
      |                     ~~^~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Execution timed out 1091 ms 27080 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Execution timed out 1093 ms 32148 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 33 ms 23764 KB Output is correct
2 Correct 36 ms 23744 KB Output is correct
3 Correct 69 ms 27704 KB Output is correct
4 Correct 60 ms 27996 KB Output is correct
5 Correct 103 ms 35404 KB Output is correct
6 Correct 97 ms 35432 KB Output is correct
7 Correct 99 ms 35500 KB Output is correct
8 Correct 99 ms 35448 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 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 0 ms 212 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 2 ms 468 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 1 ms 340 KB Output is correct
13 Correct 1 ms 212 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 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 0 ms 212 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 2 ms 468 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 1 ms 340 KB Output is correct
13 Correct 1 ms 212 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 4 ms 468 KB Output is correct
17 Correct 153 ms 3172 KB Output is correct
18 Correct 172 ms 3896 KB Output is correct
19 Correct 109 ms 3668 KB Output is correct
20 Correct 115 ms 3648 KB Output is correct
21 Correct 112 ms 3668 KB Output is correct
22 Correct 384 ms 7044 KB Output is correct
23 Correct 10 ms 980 KB Output is correct
24 Correct 57 ms 2320 KB Output is correct
25 Correct 2 ms 340 KB Output is correct
26 Correct 9 ms 980 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 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 0 ms 212 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 2 ms 468 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 1 ms 340 KB Output is correct
13 Correct 1 ms 212 KB Output is correct
14 Correct 1 ms 340 KB Output is correct
15 Correct 1 ms 340 KB Output is correct
16 Correct 4 ms 468 KB Output is correct
17 Correct 153 ms 3172 KB Output is correct
18 Correct 172 ms 3896 KB Output is correct
19 Correct 109 ms 3668 KB Output is correct
20 Correct 115 ms 3648 KB Output is correct
21 Correct 112 ms 3668 KB Output is correct
22 Correct 384 ms 7044 KB Output is correct
23 Correct 10 ms 980 KB Output is correct
24 Correct 57 ms 2320 KB Output is correct
25 Correct 2 ms 340 KB Output is correct
26 Correct 9 ms 980 KB Output is correct
27 Correct 3 ms 1236 KB Output is correct
28 Execution timed out 1084 ms 16384 KB Time limit exceeded
29 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 33 ms 23764 KB Output is correct
2 Correct 36 ms 23744 KB Output is correct
3 Correct 69 ms 27704 KB Output is correct
4 Correct 60 ms 27996 KB Output is correct
5 Correct 103 ms 35404 KB Output is correct
6 Correct 97 ms 35432 KB Output is correct
7 Correct 99 ms 35500 KB Output is correct
8 Correct 99 ms 35448 KB Output is correct
9 Correct 100 ms 35536 KB Output is correct
10 Correct 73 ms 19828 KB Output is correct
11 Correct 151 ms 39388 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 0 ms 212 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 1 ms 212 KB Output is correct
16 Correct 0 ms 212 KB Output is correct
17 Correct 0 ms 212 KB Output is correct
18 Correct 35 ms 23880 KB Output is correct
19 Correct 34 ms 23764 KB Output is correct
20 Correct 34 ms 23752 KB Output is correct
21 Correct 35 ms 23800 KB Output is correct
22 Incorrect 114 ms 32532 KB 1st lines differ - on the 1st token, expected: '45561826463480', found: '45557677700171'
23 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1091 ms 27080 KB Time limit exceeded
2 Halted 0 ms 0 KB -