dp #include <iostream> #include <cmath> #include <cstring> using namespace std; int N, m; int data[30000]; int main() { while(cin >> N >> m) { int ans = 0; int cost, pro; memset(data, 0, sizeof(data)); for(int i = 0; i < m; i++) { cin >> cost >> pro; for(int j = N; j >= cost; j--) { if(data[j] < data[j - cost] + cost * pro) { data[j] = data[j - cost] + + cost * pro; ans = max(data[j], ans); } } } cout << ans << endl; } return 0; }