제출 #638450

#제출 시각아이디문제언어결과실행 시간메모리
638450ankish2000nayakKnapsack (NOI18_knapsack)C++14
73 / 100
756 ms262144 KiB
#include<cstdio> #include<sstream> #include<cstdlib> #include<cctype> #include<climits> #include<cmath> #include<algorithm> #include<set> #include<queue> #include<stack> #include<list> // #include<list> #include<iostream> #include<fstream> #include<numeric> #include<string> #include<vector> #include<cstring> #include<map> #include<iterator> #include<bitset> #include<iomanip> #include<deque> #include<tuple> #include<unordered_map> #include<unordered_set> // #include<thread> // #include<chrono> // #include "mingw.thread.h" // #include<unordered_set> // #include <ext/pb_ds/assoc_container.hpp> // using namespace __gnu_pbds; // down up right left int dx[] = { 0, 1, -1, 0}; int dy[] = { 1, 0, 0, -1}; // all compases directions int ax[] = { -1, -1, 0, 1, 1, 1, 0, -1}; int ay[] = { 0, 1, 1, 1, 0, -1, -1, -1}; int kx[] = { -2, -2, -1, 1, 2, 2, 1, -1}; int ky[] = { -1, 1, 2, 2, 1, -1, -2, -2}; #define valid(x,y,row,col) x>=0 && y>=0 && x<row && y<col #define pb push_back #define mp make_pair #define fs first #define se second #define pi 2*acos(0) #define PI 3.14159265358979323846264338 #define modulo 1000000007 #define SMA 300010 #define MAX 100000010 // #define INT_MAX 2147483647 // #define INT_MIN -2147483648 #define input freopen("input.txt", "r", stdin) #define output freopen("output.txt", "w", stdout) #define ms(a,b) memset(a, b, sizeof(a)) #define sc(n) scanf("%d",&n) #define loop(i,n) for(int i = 0; i<n; i++) #define nloop(i,n) for(int i = 1; i<=n; i++) #define prln(n) printf("%d\n",n) #define prsp(n) printf("%d ",n) #define pr(n) printf("%d",n) #define INF 1100000000 #define all(x) (x).begin(), (x).end() using namespace std; // using namespace std::chrono; typedef long long ll; typedef unsigned long long ull; typedef pair<int, int> pint; // // typedef vector<int> vint; // // typedef vector<pint> vpint; // // after input of int dont forget to take getchar() in uva // // getline() takes complete line. // // Matrix 45* rotation formula of n*n (i,j) -> (n-1+i-j,i+j) zero based indexing // // unique function is awesome // // compiler might replace this with its function struct item{ ll v, w, k; }; ll maxValue(vector<item> &items,int n,int s,vector<vector<ll>> &Mem){ if(n == 0){ return 0; } if(Mem[n][s] != -1){ return Mem[n][s]; } ll maxV = 0; for(int i = 0; i<=items[n-1].k; ++i){ if(s-i*items[n-1].w >= 0) maxV = max( maxV, maxValue( items, n-1, s-i*items[n-1].w, Mem)+i*items[n-1].v); else return Mem[n][s] = maxV; } return Mem[n][s] = maxV; } int main(){ ll s; int n; cin >> s >> n; vector<item> items(n); for(int i = 0; i<n; ++i){ cin >> items[i].v >> items[i].w >> items[i].k; } vector<vector<ll>> Mem(n+1,vector<ll>(s+1,-1)); cout << maxValue( items, n, s, Mem) << "\n"; return 0; } // priority_queue customized // struct ele{ // ll value, i, j; // }; // struct myComp{ // constexpr operator()(struct ele const &e1,struct ele const &e2) const noexcept{ // return e1.value > e2.value; // } // };
#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...