Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.76 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<algorithm>
  3. using namespace std;
  4.  
  5. int T[17];
  6. int P[17];
  7. int check[17];
  8. int N;
  9. int sum = 0;
  10. int maxim = 0;
  11.  
  12. //cur : 현재 몇 일째 인지
  13. void recur(int cur,int sum) {
  14.    
  15.     //1일을 포함하는지가 관건!
  16.  
  17.     if (cur + T[cur] <= N + 1) {
  18.         maxim = max(maxim, sum);
  19.     }
  20.  
  21.     if (cur + T[cur] > N+1) {
  22.         return;
  23.     }
  24.  
  25.     for (int i = cur + T[cur]; i <= N; i++) {
  26.         if (check[i] == 0) {
  27.             check[i] = 1;
  28.             recur(i, sum + P[i]);
  29.             check[i] = 0;
  30.         }  
  31.     }
  32. }
  33. int main() {
  34.  
  35.     scanf("%d", &N);
  36.  
  37.     for (int i = 1; i <= N; i++) {
  38.         scanf("%d %d", &T[i], &P[i]);
  39.     }
  40.  
  41.     for (int i = 1; i <= N; i++) {
  42.         if (check[i] == 0) {
  43.             check[i] = 1;
  44.             recur(i, P[i]);
  45.             check[i] = 0;
  46.         }
  47.     }
  48.     printf("%d\n",maxim);
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement