提出 #69839656
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i, j, k) for(int i = (j); i <= (k); i++)
#define per(i, j, k) for(int i = (j); i >= (k); i--)
#define pb emplace_back
#define fi first
#define se second
using vi = vector<int>;
using pi = pair<int, int>;
template<typename T0, typename T1> bool chmin(T0 &x, const T1 &y){
if(y < x){x = y; return true;} return false;
}
template<typename T0, typename T1> bool chmax(T0 &x, const T1 &y){
if(x < y){x = y; return true;} return false;
}
template<typename T> void debug(char *s, T x){
cerr << s <<" = "<< x <<endl;
}
template<typename T, typename ...Ar> void debug(char *s, T x, Ar... y){
int dep = 0;
while(!(*s == ',' && dep == 0)){
if(*s == '(') dep++;
if(*s == ')') dep--;
cerr << *s++;
}
cerr <<" = "<< x <<",";
debug(s + 1, y...);
}
#define gdb(...) debug((char*)#__VA_ARGS__, __VA_ARGS__)
const int V = 500;
signed main(){
#ifdef LOCAL
assert( freopen(".in", "r", stdin) );
assert( freopen(".out", "w", stdout) );
#endif
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vi w(n), v(n);
rep(i, 0, n - 1){
cin >> v[i] >> w[i];
}
int q;
cin >> q;
vector< array<int, 4> > Q(q);
vi ans(q);
int tmp = 0;
for(auto &[l, r, c, id]:Q){
cin >> l >> r >> c;
l --, r --;
id = tmp ++;
}
vector<vi> f(n, vi(V + 1)), g(n, vi(V + 1));
auto dfs = [&](auto &self, int l, int r, vector< array<int, 4> > Q)->void {
if(l + 1 == r){
for(auto [l, r, c, id]:Q){
ans[id] = (v[l] <= c? w[l]: 0);
}
return;
}
int mid = (l + r) / 2;
fill(f[mid].begin(), f[mid].end(), 0);
per(i, mid - 1, l){
f[i] = f[i + 1];
rep(j, 0, V - v[i]){
chmax(f[i][j + v[i]], f[i + 1][j] + w[i]);
}
}
fill(g[mid - 1].begin(), g[mid - 1].end(), 0);
rep(i, mid, r - 1){
g[i] = g[i - 1];
rep(j, 0, V - v[i]){
chmax(g[i][j + v[i]], g[i - 1][j] + w[i]);
}
}
vector< array<int, 4> > L, R;
for(auto [l, r, c, id]:Q){
if(l < mid && r >= mid){
rep(i, 0, c){
chmax(ans[id], f[l][i] + g[r][c - i]);
}
} else if(r < mid){
L.push_back({l, r, c, id});
} else if(l >= mid){
R.push_back({l, r, c, id});
}
}
self(self, l, mid, L);
self(self, mid, r, R);
};
dfs(dfs, 0, n, Q);
rep(i, 0, q - 1){
cout << ans[i] <<'\n';
}
}
提出情報
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
575 / 575 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_00.txt, 00_sample_01.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 01_small_00.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 01_small_04.txt, 01_small_05.txt, 01_small_06.txt, 01_small_07.txt, 02_large_00.txt, 02_large_01.txt, 02_large_02.txt, 02_large_03.txt, 02_large_04.txt, 02_large_05.txt, 02_large_06.txt, 02_large_07.txt, 02_large_08.txt, 02_large_09.txt, 02_large_10.txt, 02_large_11.txt, 02_large_12.txt, 02_large_13.txt, 02_large_14.txt, 02_large_15.txt, 02_large_16.txt, 02_large_17.txt, 02_large_18.txt, 02_large_19.txt, 02_large_20.txt, 02_large_21.txt, 02_large_22.txt, 02_large_23.txt, 02_large_24.txt, 02_large_25.txt, 02_large_26.txt, 02_large_27.txt, 02_large_28.txt, 02_large_29.txt, 02_large_30.txt, 02_large_31.txt, 02_large_32.txt, 02_large_33.txt, 02_large_34.txt, 02_large_35.txt, 03_handmade_00.txt, 03_handmade_01.txt, 03_handmade_02.txt, 03_handmade_03.txt, 03_handmade_04.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_00.txt |
AC |
1 ms |
3640 KiB |
| 00_sample_01.txt |
AC |
1 ms |
3448 KiB |
| 01_small_00.txt |
AC |
56 ms |
19064 KiB |
| 01_small_01.txt |
AC |
102 ms |
22716 KiB |
| 01_small_02.txt |
AC |
97 ms |
28428 KiB |
| 01_small_03.txt |
AC |
2 ms |
3864 KiB |
| 01_small_04.txt |
AC |
88 ms |
23228 KiB |
| 01_small_05.txt |
AC |
14 ms |
6224 KiB |
| 01_small_06.txt |
AC |
82 ms |
23216 KiB |
| 01_small_07.txt |
AC |
117 ms |
22864 KiB |
| 02_large_00.txt |
AC |
353 ms |
181804 KiB |
| 02_large_01.txt |
AC |
430 ms |
181928 KiB |
| 02_large_02.txt |
AC |
360 ms |
179364 KiB |
| 02_large_03.txt |
AC |
422 ms |
179196 KiB |
| 02_large_04.txt |
AC |
258 ms |
175128 KiB |
| 02_large_05.txt |
AC |
283 ms |
175072 KiB |
| 02_large_06.txt |
AC |
359 ms |
181760 KiB |
| 02_large_07.txt |
AC |
446 ms |
181756 KiB |
| 02_large_08.txt |
AC |
373 ms |
179428 KiB |
| 02_large_09.txt |
AC |
465 ms |
179316 KiB |
| 02_large_10.txt |
AC |
281 ms |
175176 KiB |
| 02_large_11.txt |
AC |
319 ms |
175276 KiB |
| 02_large_12.txt |
AC |
362 ms |
181908 KiB |
| 02_large_13.txt |
AC |
442 ms |
181924 KiB |
| 02_large_14.txt |
AC |
365 ms |
179328 KiB |
| 02_large_15.txt |
AC |
465 ms |
179304 KiB |
| 02_large_16.txt |
AC |
295 ms |
175040 KiB |
| 02_large_17.txt |
AC |
332 ms |
175140 KiB |
| 02_large_18.txt |
AC |
368 ms |
182032 KiB |
| 02_large_19.txt |
AC |
399 ms |
182084 KiB |
| 02_large_20.txt |
AC |
360 ms |
179544 KiB |
| 02_large_21.txt |
AC |
406 ms |
179164 KiB |
| 02_large_22.txt |
AC |
284 ms |
175272 KiB |
| 02_large_23.txt |
AC |
310 ms |
175124 KiB |
| 02_large_24.txt |
AC |
373 ms |
182156 KiB |
| 02_large_25.txt |
AC |
427 ms |
181912 KiB |
| 02_large_26.txt |
AC |
380 ms |
179216 KiB |
| 02_large_27.txt |
AC |
424 ms |
179272 KiB |
| 02_large_28.txt |
AC |
288 ms |
175112 KiB |
| 02_large_29.txt |
AC |
313 ms |
175176 KiB |
| 02_large_30.txt |
AC |
377 ms |
182408 KiB |
| 02_large_31.txt |
AC |
426 ms |
182104 KiB |
| 02_large_32.txt |
AC |
370 ms |
179292 KiB |
| 02_large_33.txt |
AC |
422 ms |
179300 KiB |
| 02_large_34.txt |
AC |
287 ms |
175116 KiB |
| 02_large_35.txt |
AC |
308 ms |
175144 KiB |
| 03_handmade_00.txt |
AC |
256 ms |
195736 KiB |
| 03_handmade_01.txt |
AC |
33 ms |
16992 KiB |
| 03_handmade_02.txt |
AC |
364 ms |
181852 KiB |
| 03_handmade_03.txt |
AC |
230 ms |
187848 KiB |
| 03_handmade_04.txt |
AC |
322 ms |
187744 KiB |