/* -*- coding: utf-8 -*- * * 54.cc: No.54 Happy Hallowe'en - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const int MAX_N = 10000; /* typedef */ typedef pair pii; typedef set si; /* global variables */ pii vts[MAX_N]; si dp[MAX_N + 1]; /* subroutines */ bool cmp_vt(const pii &p0, const pii &p1) { return p0.first + p0.second < p1.first + p1.second; } /* main */ int main() { int n; cin >> n; for (int i = 0; i < n; i++) cin >> vts[i].first >> vts[i].second; sort(vts, vts + n, cmp_vt); dp[0].insert(0); for (int i = 0; i < n; i++) { int &vi = vts[i].first, &ti = vts[i].second; for (si::iterator sit = dp[i].begin(); sit != dp[i].end(); sit++) { dp[i + 1].insert(*sit); if (*sit < ti) dp[i + 1].insert(*sit + vi); } } printf("%d\n", *(dp[n].rbegin())); return 0; }