제출 #784712

#제출 시각아이디문제언어결과실행 시간메모리
784712thimote75메기 농장 (IOI22_fish)C++17
35 / 100
1077 ms2097152 KiB
#include "fish.h" #include <bits/stdc++.h> using namespace std; using num = long long; using idata = vector<int>; using igrid = vector<idata>; using ndata = vector<num>; using ngrid = vector<ndata>; const num INF = 1e18; const num NINF = -INF; struct LocalResult { int N; ndata ascend, descend; // ascend[0] = descend[0] // ascend[i] => ascend[j] ifof i < j // descend[i] => descend[j] ifof i > j LocalResult (int _N) { N = _N; ascend .resize(N + 1, NINF); ascend [0] = 0; descend.resize(N + 1, NINF); } LocalResult next (ndata &cumul) { LocalResult next(N); for (int i = 1; i <= N; i ++) { num mx = NINF; for (int j = 0; j <= i; j ++) { mx = max( mx, ascend[j] + cumul[i] - cumul[j] ); } for (int j = 0; j <= N; j ++) { mx = max( mx, descend[j] + cumul[max(i, j)] ); } next.ascend[i] = mx; } next.ascend[0] = ascend[0]; for (int i = N; i >= 0; i --) { num mx = NINF; for (int j = i; j <= N; j ++) { mx = max( mx, descend[j] + cumul[j] - cumul[i] ); } next.descend[i] = max(mx, ascend[i]); } return next; } }; ndata cumul (ndata &arr) { ndata res (arr.size() + 1, 0); for (int i = 0; i < arr.size(); i ++) res[i + 1] = res[i] + arr[i]; return res; } num max_weights(int N, int M, idata X, idata Y, idata W) { LocalResult result (N); ngrid grid(N + 1, ndata(N)); for (int i = 0; i < M; i ++) grid[X[i] + 1][Y[i]] += W[i]; for (int i = 0; i <= N; i ++) grid[i] = cumul(grid[i]); num res = NINF; for (int i = 0; i <= N; i ++) { result = result.next( grid[i] ); if (i == N - 1) { for (num u : result.ascend) res = max(res, u); } } for (num u : result.descend) res = max(res, u); return res; }

컴파일 시 표준 에러 (stderr) 메시지

fish.cpp: In function 'ndata cumul(ndata&)':
fish.cpp:72:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |   for (int i = 0; i < arr.size(); i ++)
      |                   ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...