Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <algorithm>
- #include <vector>
- using namespace std;
- inline int min(int a, int b) {
- if (a < b)
- return a;
- return b;
- }
- inline int max(int a, int b) {
- if (a > b)
- return a;
- return b;
- }
- const int inf = 0x3f3f3f3f;
- int main() {
- ifstream cin("joc.in");
- ofstream cout("joc.out");
- int N; cin >> N;
- vector<int> best(101, 0);
- for (int i = 0; i < N; i) {
- int d, p; cin >> d >> p;
- vector<int> newbest(101, inf);
- for (int j = 1; j <= 100; j) {
- int newpoints = min(100, j d);
- if (newpoints > p)
- newbest[newpoints - p] = min(newbest[newpoints - p], best[j]);
- newbest[newpoints] = min(newbest[newpoints], best[j] 1);
- }
- swap(best, newbest);
- }
- cout << *min_element(best.begin() 1, best.end()) << "\n";
- }
Add Comment
Please, Sign In to add comment