답안 #1046707

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1046707 2024-08-06T20:48:21 Z Trent 메기 농장 (IOI22_fish) C++17
23 / 100
726 ms 2097152 KB
#include "fish.h"
#include "bits/stdc++.h";
using namespace std;
#define forR(i, x) for(int i = 0; i < (x); ++i)
#define REP(i, a, b) for(int i = (a); i < (b); ++i)
typedef long long ll;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef vector<int> vi;
typedef vector<vi> vvi;
struct pii{int a, b;};

ll INF = 1e16;

long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y,
                      std::vector<int> W) {
  int MH = Y[0] + 1;
  for(int i : Y) MH = max(MH, i + 1);
  vvll wp(N, vll(MH));
  vvll wpsa(N, vll(MH));
  forR(i, M) wp[X[i]][Y[i]] = W[i];
  forR(x, N) {
    wpsa[x][0] = wp[x][0];
    REP(y, 1, MH) wpsa[x][y] = wpsa[x][y-1] + wp[x][y];
  }

  vector<set<int>> sCare(N);
  forR(i, M) {
    if(X[i] > 0) sCare[X[i]-1].insert(Y[i] + 1);
    if(X[i] + 1 < N) sCare[X[i] + 1].insert(Y[i] + 1);
    if(X[i] > 1) sCare[X[i]-2].insert(Y[i] + 1);
    if(X[i] + 2 < N) sCare[X[i] + 2].insert(Y[i] + 1);
    sCare[X[i]].insert(Y[i]+1);
  }
  forR(i, N) sCare[i].insert(0);
  vector<vi> care(N);
  forR(i, N) for(int j : sCare[i]) care[i].push_back(j);
  vvll I(N, vll(MH+1)), D(N, vll(MH+1)), E(N, vll(MH+1));
  // h = HEIGHT, not the index of last element!
  forR(i, N) {
    ll besIE = -INF, besII = -INF;
    if(i > 0) {
      for(int k : care[i-1]) besIE = max(besIE, E[i-1][k] - (k > 0 ? wpsa[i-1][k-1] : 0));
    }
    for(int h : care[i]){
      if(h > 0) {
        if(i == 0) I[i][h] = 0;
        else {
          I[i][h] = max(I[i][h], besIE + wpsa[i-1][h-1]);
          besII = max(besII, I[i-1][h]- (h > 0 ? wpsa[i-1][h-1] : 0));
          I[i][h] = max(I[i][h], besII + wpsa[i-1][h-1]);
        }
      }
    }
    ll besD = -INF;
    for(int hi = (int) care[i].size() - 1; hi >= 0; --hi) {
      int h = care[i][hi];
      if(h > 0) {
        if(i == 0) D[i][h] = 0;
        else {
          if(h + 1 <= MH) {
            besD = max(besD, max(I[i-1][h+1], D[i-1][h+1]) + wpsa[i][h]);
          }
          D[i][h] = max(D[i][h], besD - (h > 0 ? wpsa[i][h-1] : 0));
        }
      }
    }

    ll besE = -INF;
    if(i > 0) {
      forR(y, MH+1) besE = max(besE, E[i-1][y]);
    }
    forR(h, MH+1) {
      if(i == 0) E[i][h] = 0;
      else {
        ll tot = max(I[i-1][h], D[i-1][h]) + (h > 0 ? wpsa[i][h-1] : 0);
        // forR(y, h) tot += wp[i][y];
        E[i][h] = max(E[i][h], max(tot, besE));
      }
    }
  }
  ll mx = 0;
  REP(h, 1, MH+1) mx = max(mx, max(I[N-1][h], D[N-1][h]));
  forR(h, MH+1) mx = max(mx, E[N-1][h]);
  return mx;
}

Compilation message

fish.cpp:2:25: warning: extra tokens at end of #include directive
    2 | #include "bits/stdc++.h";
      |                         ^
# 결과 실행 시간 메모리 Grader output
1 Runtime error 666 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Runtime error 726 ms 2097152 KB Execution killed with signal 9
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 33 ms 42588 KB Output is correct
2 Correct 37 ms 42624 KB Output is correct
3 Correct 53 ms 43196 KB Output is correct
4 Correct 56 ms 46164 KB Output is correct
5 Correct 61 ms 50772 KB Output is correct
6 Correct 66 ms 50360 KB Output is correct
7 Correct 61 ms 50696 KB Output is correct
8 Correct 62 ms 50772 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 344 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 0 ms 604 KB Output is correct
12 Correct 1 ms 604 KB Output is correct
13 Correct 0 ms 388 KB Output is correct
14 Correct 1 ms 604 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 344 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 0 ms 604 KB Output is correct
12 Correct 1 ms 604 KB Output is correct
13 Correct 0 ms 388 KB Output is correct
14 Correct 1 ms 604 KB Output is correct
15 Correct 2 ms 3932 KB Output is correct
16 Correct 1 ms 860 KB Output is correct
17 Correct 30 ms 9044 KB Output is correct
18 Correct 32 ms 8276 KB Output is correct
19 Correct 27 ms 8880 KB Output is correct
20 Correct 24 ms 8084 KB Output is correct
21 Correct 23 ms 6292 KB Output is correct
22 Correct 51 ms 11860 KB Output is correct
23 Incorrect 10 ms 6236 KB 1st lines differ - on the 1st token, expected: '3061077668538', found: '3059724260271'
24 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 344 KB Output is correct
7 Correct 0 ms 344 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 0 ms 604 KB Output is correct
12 Correct 1 ms 604 KB Output is correct
13 Correct 0 ms 388 KB Output is correct
14 Correct 1 ms 604 KB Output is correct
15 Correct 2 ms 3932 KB Output is correct
16 Correct 1 ms 860 KB Output is correct
17 Correct 30 ms 9044 KB Output is correct
18 Correct 32 ms 8276 KB Output is correct
19 Correct 27 ms 8880 KB Output is correct
20 Correct 24 ms 8084 KB Output is correct
21 Correct 23 ms 6292 KB Output is correct
22 Correct 51 ms 11860 KB Output is correct
23 Incorrect 10 ms 6236 KB 1st lines differ - on the 1st token, expected: '3061077668538', found: '3059724260271'
24 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 33 ms 42588 KB Output is correct
2 Correct 37 ms 42624 KB Output is correct
3 Correct 53 ms 43196 KB Output is correct
4 Correct 56 ms 46164 KB Output is correct
5 Correct 61 ms 50772 KB Output is correct
6 Correct 66 ms 50360 KB Output is correct
7 Correct 61 ms 50696 KB Output is correct
8 Correct 62 ms 50772 KB Output is correct
9 Runtime error 677 ms 2097152 KB Execution killed with signal 9
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 666 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -