| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1322675 | NgTrung2217 | Sailing Race (CEOI12_race) | C++20 | 61 ms | 57520 KiB |
#include <bits/stdc++.h>
#define task "pieaters"
#define ff first
#define ss second
using namespace std;
using ld = long double;
using ull = unsigned long long;
using ll = long long;
using pll = pair <ll, ll>;
using pii = pair <int, int>;
const char el = '\n';
const char sp = ' ';
const ll inf = 1e9; //1e18;
const int maxN = 305;
int n, m;
int wei[maxN][maxN], best[maxN][maxN][maxN], dp[maxN][maxN];
int main ()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
if (fopen(task".in", "r"))
{
freopen(task".in", "r", stdin);
freopen(task".out", "w", stdout);
}
if (!(cin >> n >> m)) return 0;
for (int i = 1;i <= m;++i)
{
int w, l, r;
cin >> w >> l >> r;
wei[l][r] = w;
}
for (int i = 1;i <= n;++i)
{
for (int l = i;l >= 1;--l)
{
for (int r = i;r <= n;++r)
{
best[i][l][r] = wei[l][r];
if (l < i) best[i][l][r] = max(best[i][l][r], best[i][l + 1][r]);
if (r > i) best[i][l][r] = max(best[i][l][r], best[i][l][r - 1]);
}
}
}
for (int i = n;i >= 1;--i)
{
for (int j = i;j <= n;++j)
{
for (int k = i;k <= j;++k)
{
int val = best[k][i][j];
if (k > i) val += dp[i][k - 1];
if (k < j) val += dp[k + 1][j];
dp[i][j] = max(dp[i][j], val);
}
}
}
cout << dp[1][n] << el;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
