Submission #69881148


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef signed long long ll;

#define _P(...) (void)printf(__VA_ARGS__)
#define FOR(x,to) for(x=0;x<(to);x++)
#define FORR(x,arr) for(auto& x:arr)
#define FORR2(x,y,arr) for(auto& [x,y]:arr)
#define ALL(a) (a.begin()),(a.end())
#define ZERO(a) memset(a,0,sizeof(a))
#define MINUS(a) memset(a,0xff,sizeof(a))
template<class T> bool chmax(T &a, const T &b) { if(a<b){a=b;return 1;}return 0;}
template<class T> bool chmin(T &a, const T &b) { if(a>b){a=b;return 1;}return 0;}
//-------------------------------------------------------

int N,Q;
int W[40202],V[40202];
ll dp[40202][512];
int L[202020],R[202020],C[202020];
ll ret[202020];
void dfs(int CL,int CR,vector<int> cand) {
	if(CL+1==CR) {
		FORR(c,cand) {
			if(W[CL]<=C[c]) ret[c]=V[CL];
		}
		return;
	}
	int CM=(CL+CR)/2;
	int i,j,x,y;
	FOR(x,501) {
		dp[CM-1][x]=0;
		dp[CM][x]=0;
	}
	for(x=W[CM-1];x<=500;x++) dp[CM-1][x]=V[CM-1];
	for(x=W[CM];x<=500;x++) dp[CM][x]=V[CM];
	for(x=CM-2;x>=CL;x--) {
		FOR(y,501) {
			dp[x][y]=dp[x+1][y];
			if(y>=W[x]) dp[x][y]=max(dp[x][y],dp[x+1][y-W[x]]+V[x]);
		}
		FOR(y,501) dp[x][y+1]=max(dp[x][y+1],dp[x][y]);
	}
	for(x=CM+1;x<CR;x++) {
		FOR(y,501) {
			dp[x][y]=dp[x-1][y];
			if(y>=W[x]) dp[x][y]=max(dp[x][y],dp[x-1][y-W[x]]+V[x]);
		}
		FOR(y,501) dp[x][y+1]=max(dp[x][y+1],dp[x][y]);
	}
	
	
	vector<int> C1,C2;
	FORR(c,cand) {
		if(R[c]<=CM) C1.push_back(c);
		else if(CM<=L[c]) C2.push_back(c);
		else {
			FOR(x,C[c]+1) ret[c]=max(ret[c],dp[L[c]][x]+dp[R[c]-1][C[c]-x]);
		}
	}
	dfs(CL,CM,C1);
	dfs(CM,CR,C2);
}


void solve() {
	int i,j,k,l,r,x,y; string s;
	
	cin>>N;
	FOR(i,N) {
		cin>>W[i]>>V[i];
	}
	cin>>Q;
	vector<int> cand;
	FOR(i,Q) {
		cin>>L[i]>>R[i]>>C[i];
		L[i]--;
		cand.push_back(i);
	}
	dfs(0,1<<15,cand);
	FOR(i,Q) cout<<ret[i]<<endl;
	
}


int main(int argc,char** argv){
	string s;int i;
	if(argc==1) ios::sync_with_stdio(false), cin.tie(0);
	FOR(i,argc-1) s+=argv[i+1],s+='\n'; FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin);
	cout.tie(0); solve(); return 0;
}

Submission Info

Submission Time
Task G - Range Knapsack Query
User kmjp
Language C++ 20 (gcc 12.2)
Score 575
Code Size 2124 Byte
Status AC
Exec Time 813 ms
Memory 163184 KiB

Compile Error

Main.cpp: In function ‘void dfs(int, int, std::vector<int>)’:
Main.cpp:29:13: warning: unused variable ‘i’ [-Wunused-variable]
   29 |         int i,j,x,y;
      |             ^
Main.cpp:29:15: warning: unused variable ‘j’ [-Wunused-variable]
   29 |         int i,j,x,y;
      |               ^
Main.cpp: In function ‘void solve()’:
Main.cpp:66:15: warning: unused variable ‘j’ [-Wunused-variable]
   66 |         int i,j,k,l,r,x,y; string s;
      |               ^
Main.cpp:66:17: warning: unused variable ‘k’ [-Wunused-variable]
   66 |         int i,j,k,l,r,x,y; string s;
      |                 ^
Main.cpp:66:19: warning: unused variable ‘l’ [-Wunused-variable]
   66 |         int i,j,k,l,r,x,y; string s;
      |                   ^
Main.cpp:66:21: warning: unused variable ‘r’ [-Wunused-variable]
   66 |         int i,j,k,l,r,x,y; string s;
      |                     ^
Main.cpp:66:23: warning: unused variable ‘x’ [-Wunused-variable]
   66 |         int i,j,k,l,r,x,y; string s;
      |                       ^
Main.cpp:66:25: warning: unused variable ‘y’ [-Wunused-variable]
   66 |         int i,j,k,l,r,x,y; string s;
      |                         ^
Main.cpp: In function ‘int main(int, char**)’:
Main.cpp:6:19: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
    6 | #define FOR(x,to) for(x=0;x<(to);x++)
      |                   ^~~
Main.cpp:88:9: note: in expansion of macro ‘FOR’
   88 |         FOR(i,argc-1) s+=argv[i+1],s+='\n'; FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin);
      |         ^~~
Main.cpp:6:19: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
    6 | #define FOR(x,to) for(x=0;x<(to);x++)
      |                   ^~~
Main.cpp:88:45: note: in expansion of macro ‘FOR’
   88 |         FOR(i,argc-1) s+=argv[i+1],s+='\n'; FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin);
      |                                             ^~~
Main.cpp:6:28: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
    6 | #define FOR(x,to) for(x=0;x<(to);x++)
      |                            ^
Main.cpp:88:45: note: in expansion of macro ‘FOR’
   88 |         FOR(i,argc-1) s+=argv[i+1],s+='\n'; FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin);
      |                                             ^~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 575 / 575
Status
AC × 2
AC × 51
Set Name Test Cases
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
Case Name Status Exec Time Memory
00_sample_00.txt AC 484 ms 134656 KiB
00_sample_01.txt AC 478 ms 134472 KiB
01_small_00.txt AC 629 ms 143592 KiB
01_small_01.txt AC 696 ms 145360 KiB
01_small_02.txt AC 734 ms 149276 KiB
01_small_03.txt AC 480 ms 134768 KiB
01_small_04.txt AC 673 ms 145864 KiB
01_small_05.txt AC 499 ms 135608 KiB
01_small_06.txt AC 672 ms 145892 KiB
01_small_07.txt AC 700 ms 145836 KiB
02_large_00.txt AC 732 ms 141536 KiB
02_large_01.txt AC 779 ms 141684 KiB
02_large_02.txt AC 728 ms 140912 KiB
02_large_03.txt AC 773 ms 140952 KiB
02_large_04.txt AC 693 ms 139928 KiB
02_large_05.txt AC 729 ms 139932 KiB
02_large_06.txt AC 732 ms 141508 KiB
02_large_07.txt AC 777 ms 141536 KiB
02_large_08.txt AC 734 ms 140976 KiB
02_large_09.txt AC 774 ms 140888 KiB
02_large_10.txt AC 689 ms 140096 KiB
02_large_11.txt AC 731 ms 140028 KiB
02_large_12.txt AC 732 ms 141628 KiB
02_large_13.txt AC 778 ms 141608 KiB
02_large_14.txt AC 732 ms 140848 KiB
02_large_15.txt AC 776 ms 140864 KiB
02_large_16.txt AC 691 ms 140016 KiB
02_large_17.txt AC 727 ms 140092 KiB
02_large_18.txt AC 764 ms 141564 KiB
02_large_19.txt AC 811 ms 141660 KiB
02_large_20.txt AC 760 ms 141052 KiB
02_large_21.txt AC 805 ms 141060 KiB
02_large_22.txt AC 723 ms 139932 KiB
02_large_23.txt AC 764 ms 139904 KiB
02_large_24.txt AC 767 ms 141672 KiB
02_large_25.txt AC 813 ms 141676 KiB
02_large_26.txt AC 767 ms 140956 KiB
02_large_27.txt AC 813 ms 140904 KiB
02_large_28.txt AC 725 ms 139872 KiB
02_large_29.txt AC 761 ms 139932 KiB
02_large_30.txt AC 767 ms 141624 KiB
02_large_31.txt AC 809 ms 141608 KiB
02_large_32.txt AC 760 ms 140832 KiB
02_large_33.txt AC 806 ms 140816 KiB
02_large_34.txt AC 722 ms 139932 KiB
02_large_35.txt AC 759 ms 139956 KiB
03_handmade_00.txt AC 678 ms 143508 KiB
03_handmade_01.txt AC 699 ms 163184 KiB
03_handmade_02.txt AC 805 ms 141768 KiB
03_handmade_03.txt AC 676 ms 142328 KiB
03_handmade_04.txt AC 781 ms 142244 KiB