Untitled
unknown
plain_text
2 years ago
1.7 kB
5
Indexable
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #define MAX_SIZE 1000000 #define INF 10000000 using namespace std; int N, L1, L2, L3, P1, P2, P3; int timeAdv[5]; int pointAdv[5]; int khach[100][2]; int adv[10] = {0}; int minTime, maxTime; bool visited[101]; int result; void reset(){ for(int i = 0; i < 100; ++i){ visited[i] = false; } } int tinhDiem(){ int sum = 0; for(int i = 0; i < N; ++i){ int point = 0; for(int j = 0; j < 3; ++j){ if(khach[i][0] <= adv[j] && khach[i][0] + khach[i][1] >= adv[j] + timeAdv[j]){ if(point < pointAdv[j]){ point = pointAdv[j]; } } } sum += point; } return sum; } void backtrack(int k){ if(k==3){ for(int i = 0; i < 3; ++i){ for(int j = 0; j < 3; ++j){ if(i != j){ if(timeAdv[i] + adv[i] > adv[j] && timeAdv[i] + adv[i] <= timeAdv[j] + adv[j]) { return; } } } } int n = tinhDiem(); if(n > result){ result = n; } return; } for(int i = 1; i <= 50; ++i){ adv[k] = i; backtrack(k+1); } } int main(){ //freopen("input.txt", "r", stdin); int T; cin >> T; for(int tc = 1; tc <= T; ++tc){ cin >> N; for(int i = 0; i < 3; ++i){ cin >> timeAdv[i]; } for(int i = 0; i < 3; ++i){ cin >> pointAdv[i]; } minTime = INF; maxTime = 0; for(int i = 0; i < N; ++i){ cin >> khach[i][0] >> khach[i][1]; if(khach[i][0] < minTime){ minTime = khach[i][0]; } if(khach[i][1] > maxTime){ maxTime = khach[i][1]; } } for(int i = 0; i < 5; ++i){ adv[i] = 0; } result = 0; backtrack(0); cout << "Case #" << tc << endl << result << endl; } return 0; }
Editor is loading...