답안 #993518

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
993518 2024-06-05T22:57:17 Z Clan328 메기 농장 (IOI22_fish) C++17
0 / 100
891 ms 2097152 KB
#include "fish.h"

#include <bits/stdc++.h>

using namespace std;

#define pb push_back
#define mp make_pair
#define nL '\n'
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int, int> pii;
typedef vector<pii> vpii;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef pair<ll, ll> pll;
typedef vector<pll> vpll;

int ipow(int a, int n) {
   if (n == 0) return 1;
   int x = ipow(a, n/2);
   if (n % 2 == 0) return x*x;
   return x*x*a;
}

template <typename T>
ostream& operator<<(ostream& stream, const vector<T>& v) {
    for (auto elem : v) 
        stream << elem << " ";
    return stream;
}

template <typename T>
istream& operator>>(istream& stream, vector<T>& v){
   for(auto &elem : v)
        stream >> elem;
   return stream;
}

long long max_weights(int N, int M, vi X, vi Y,
                      vi W) {
    ll maxY = 0;
    for (int i = 0; i < M; i++) maxY = max(maxY, (ll)Y[i]);

    vvl mat(N, vl(maxY+1));
    for (int i = 0; i < M; i++) mat[X[i]][Y[i]] = W[i];

    vector<vvl> dp(N, vvl(maxY+1, vl(maxY+1)));
    for (int i = 1; i < N; i++) {
        int tmp1 = 0;
        for (int j = 0; j <= maxY; j++) {
            if (j > 0) tmp1 += mat[i-1][j-1];

            int tmp2 = 0;
            for (int k = 0; k <= maxY; k++) {
                if (k <= j) {
                    if (k > 0) tmp2 -= mat[i-1][k-1];
                } else {
                    if (k > 0) tmp2 += mat[i][k-1];
                }

                int tmp3 = 0;
                for (int l = 0; l <= maxY;l++) {
                    if (l > k && l <= j) {
                        if (l > 0) tmp3 -= mat[i-1][l-1];
                    }

                    dp[i][j][k] = max(dp[i][j][k], dp[i-1][k][l]+tmp1+tmp2+tmp3);
                }
            }
        }
    }

    long long res = 0;
    for (int i = 0; i <= maxY; i++) {
        for (int j = 0; j <= maxY; j++)
            res = max(res, dp[N-1][i][j]);
    }

    return res;
}














# 결과 실행 시간 메모리 Grader output
1 Runtime error 891 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB 1st lines differ - on the 1st token, expected: '2', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 13 ms 14424 KB 1st lines differ - on the 1st token, expected: '10082010', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB 1st lines differ - on the 1st token, expected: '3', found: '2'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB 1st lines differ - on the 1st token, expected: '3', found: '2'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB 1st lines differ - on the 1st token, expected: '3', found: '2'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 13 ms 14424 KB 1st lines differ - on the 1st token, expected: '10082010', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 891 ms 2097152 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -