Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<algorithm>
- using namespace std;
- int T[17];
- int P[17];
- int check[17];
- int N;
- int sum = 0;
- int maxim = 0;
- //cur : 현재 몇 일째 인지
- void recur(int cur,int sum) {
- //1일을 포함하는지가 관건!
- if (cur + T[cur] <= N + 1) {
- maxim = max(maxim, sum);
- }
- if (cur + T[cur] > N+1) {
- return;
- }
- for (int i = cur + T[cur]; i <= N; i++) {
- if (check[i] == 0) {
- check[i] = 1;
- recur(i, sum + P[i]);
- check[i] = 0;
- }
- }
- }
- int main() {
- scanf("%d", &N);
- for (int i = 1; i <= N; i++) {
- scanf("%d %d", &T[i], &P[i]);
- }
- for (int i = 1; i <= N; i++) {
- if (check[i] == 0) {
- check[i] = 1;
- recur(i, P[i]);
- check[i] = 0;
- }
- }
- printf("%d\n",maxim);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement