Untitled
unknown
plain_text
2 years ago
2.7 kB
4
Indexable
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; int N; int qc[4];// do dai cua quang cao int sc[4];// diem so int A[51]; // thoi gian khach hang bat dau den int D[51]; // khoang thoi gian khach hang o lai int tim[4][2]; // quang cao thi k co time bat dai time[k][0] va thoi gian kt time[k][1] void reset() { for (int i = 0; i < 4; i++) { for (int j = 0; j < 2; j++) { tim[i][j] = 0; } } } // tinh diem so xem quang cao khi da xem du 3 quang cao int scc() { int diem[51] = { 0 }; //diem so khack hang nhan duoc for (int i = 1; i <= N; i++) { for (int j = 1; j <= 3; j++) { int xbgin = tim[j][0]; int xend = tim[j][1]; if (A[i] <= xbgin && A[i] + D[i] >= xend) { if (diem[i] < sc[j]) { diem[i] = sc[j]; } } } } int sum = 0; for (int i = 1; i <= N; i++) { sum = sum + diem[i]; } return sum; } // kiem tra xem quang cao thu k duoc dat vao vi tri i co bi trung hay khong bool check(int k, int bgin) { int end = bgin + qc[k]; for (int i = 1; i <= 3; i++) { if (tim[i][0] != 0 && tim[i][1] != 0 && i != k) { // time1 la time bat dau time2 la kt if (bgin <= tim[i][0] && tim[i][1] <= end) // phai nho hon bang vi tai hai thoi dien deu bang nhau khong thoa man { return false; } if (tim[i][0] <= bgin && bgin < tim[i][1] && tim[i][1] < end) { return false; } if (bgin <= tim[i][0] && tim[i][0] < end && end < tim[i][1]) { return false; } if (tim[i][0] <=bgin && end <= tim[i][1]) // phai nho hon bang vi x0 , y0 name ben trong phan tu { return false; } } } return true; } void quangcao(int& max, int k) { if (k == 4) { int t = scc(); if (max < t) { max = t; } return; } // chon thoi diem chieu cua quang cao for (int i = 1; i <= 50; i++) { if (check(k, i) == true) { tim[k][0] = i; tim[k][1] = i + qc[k]; quangcao(max, k + 1); tim[k][0] = 0; tim[k][1] = 0; } } } int main() { //freopen("input.txt", "r", stdin); int testcase; cin >> testcase; for (int tc = 1; tc <= testcase; tc++) { cin >> N; for (int i = 0; i < 51; i++) { A[i] = 0; D[i] = 0; } reset(); for (int i = 1; i <= 3; i++) { cin >> qc[i]; // do dai cua quang cao thu i } for (int i = 1; i <= 3; i++) { cin >> sc[i]; // diem so cua quang cao thu i } // thoi gian den va di for (int i = 1; i <= N; i++) { cin >> A[i]; cin >> D[i]; } int max = 0; quangcao(max, 1); cout << "Case #" << tc << endl << max << endl; } }
Editor is loading...