답안 #625718

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
625718 2022-08-10T17:27:20 Z d4xn 메기 농장 (IOI22_fish) C++17
0 / 100
1000 ms 8872 KB
#include "fish.h"
#include <bits/stdc++.h>
using namespace std;

//#define int long long
#define ll long long
#define vi vector<int>
#define ii pair<int, int>
#define vii vector<ii>

const int N = 301, inf = INT_MAX;

int n, m;
int c[N][N];
bitset<N> vis[10][10];
ll dp[N][N][N]; // dp[i][j][k] = maximos peces que puedo conseguir
              // con las k primeras columnas donde
              // en la columna k+1 he subido i-1
              // en la columna k+2 he subido j-1

ll mx(int curr, int h1, int h2) {
  if (curr == -1) return 0;
  
  if (vis[h1][h2][curr]) return dp[h1][h2][curr];
  
  dp[h1][h2][curr] = 0;
  vis[h1][h2][curr] = 1;

  for (int h = 0; h < n+1; h++) {
    ll cnt = 0;

    // ver si pillo los de la derecha
    if (curr+1 < n) {
      for (int i = 0; i < h; i++) {
        if (h2-1 < i && h1-1 < i) cnt += c[i][curr+1];
      }
    }

    // ver si pillo los de la izquierda
    if (curr-1 >= 0) {
      for (int i = 0; i < h; i++) {
        cnt += c[i][curr-1];
      }
    }

    // ver si he eliminado alguno de los que he pillado
    for (int i = 0; i < min(h, h1); i++) {
      cnt -= c[i][curr];
    }

    dp[h1][h2][curr] = max(dp[h1][h2][curr], cnt + mx(curr-1, h, h1));
  }
  return dp[h1][h2][curr];
}

long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y,
                      std::vector<int> W) {
  
  for (int i = 0; i < N; i++) {
    memset(c[i], 0, sizeof(c[i]));
  }

  n = N;
  m = M;
  for (int i = 0; i < m; i++) {
    c[Y[i]][X[i]] = W[i];
  }
  return mx(n-1, 0, 0);
}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 27 ms 4948 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Runtime error 52 ms 8872 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 1108 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 1 ms 468 KB Output is correct
3 Correct 1 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 340 KB Output is correct
7 Correct 0 ms 340 KB Output is correct
8 Correct 0 ms 340 KB Output is correct
9 Execution timed out 1083 ms 4996 KB Time limit exceeded
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 1 ms 468 KB Output is correct
3 Correct 1 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 340 KB Output is correct
7 Correct 0 ms 340 KB Output is correct
8 Correct 0 ms 340 KB Output is correct
9 Execution timed out 1083 ms 4996 KB Time limit exceeded
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 1 ms 468 KB Output is correct
3 Correct 1 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 340 KB Output is correct
7 Correct 0 ms 340 KB Output is correct
8 Correct 0 ms 340 KB Output is correct
9 Execution timed out 1083 ms 4996 KB Time limit exceeded
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 1108 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 27 ms 4948 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -