제출 #1081307

#제출 시각아이디문제언어결과실행 시간메모리
1081307erdemfurkanKnapsack (NOI18_knapsack)C++14
0 / 100
1 ms1116 KiB
#include "bits/stdc++.h"
#define int long long
using namespace std;

int dp[300][300];

signed main() {
	int s, n;
	cin >> s >> n;
	map<int,vector<pair<int,int>>> gruplar;
	for(int i = 0; i < n; i++) {
		int vi, wi, ki;
		cin >> vi >> wi >> ki;
		gruplar[wi].push_back({vi, ki});
	}
	for(auto x : gruplar) {
		sort(x.second.begin(), x.second.end(), greater<pair<int,int>>());
	}
	// dp[i][j] ilk i grubu kullanarak j ağırlık kullanarak elde edebileceğim en fazla değer
	
	for(int i = 0; i < 300; i++) {
		for(int j = 0; j < 300; j++) {
			dp[i][j] = -1;
		}
	}
	dp[0][0] = 0;
	int i = 1;
	for(auto x : gruplar) {
		int agirlik = x.first; // gruptakilerin ağırlığı
		vector<pair<int,int>> grup = x.second; // {değer, kaç tane olduğu}
		for(int w = 0; w <= s; w++) {
			int j = 0;
			int k = 0;
			int deger = 0;
			int kk = 0;
			dp[i][w] = dp[i-1][w];
			while(j < grup.size() && (kk+1)*agirlik <= s) {
				kk++;
				k++;
				deger += grup[j].first;
				if(w - kk * agirlik >= 0) dp[i][w] = max(dp[i][w], dp[i-1][w-kk*agirlik]+deger);
				if(k == grup[j].second) {
					j++;
					k = 0;
				}
			}
		}
		i++;
	}
	int mx = -1;
	for(int i = 0; i < 300; i++) {
		for(int j = 0; j < 300; j++) {
			if(j <= s) {
				mx = max(mx, dp[i][j]);
			}
		}
	}
	cout << mx << endl;

}

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

knapsack.cpp: In function 'int main()':
knapsack.cpp:37:12: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |    while(j < grup.size() && (kk+1)*agirlik <= s) {
      |          ~~^~~~~~~~~~~~~
#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...