Çoxprosessorlu Planlaşdırma#371

Çoxprosessorlu Planlaşdırma

2 saniyə
64 meqabayt
Çox çətin

Çoxprosessorlu bir maşında iki tətbiq işləyir. Hər bir tətbiq (i = 1, 2) prosedurdan ibarətdir; prosedurlar -dən -ə qədər nömrələnmişdir və ardıcıllıqla (1, \ldots, N) icra olunmalıdır. Bir prosedur cütü ilə tanıdılır, burada i = 1, 2 tətbiqi müəyyən edir, 1 \leq j \leq N isə tətbiq daxilində prosedurun indeksidir. Prosedur yalnız P(i, j) prosessorunda icra oluna bilər və icrası D(i, j) saniyə çəkir. Hər iki tətbiqin prosedurlarını elə planlaşdırmaq istəyirik ki, sonuncu prosedur (istənilən tətbiq üzrə) bitdikdə olan an (yəni makespan) minimum olsun. Hər iki tətbiq planlaşdırmaya vaxtından başlayaraq hazırdır.

Planlaşdırma aşağıdakı qaydalara tabe olmalıdır:

Verilmiş prosedurlar üçün hər iki tətbiq üzrə minimum makespan-i tapmaq üçün proqram yazın.

Giriş

İlk sətirdə — testlərin sayı verilir.

Hər bir test üçün ilk sətirdə (1 \leq N \leq 300) — hər bir tətbiqdəki prosedurların sayı verilir. Sonra birinci tətbiq üçün sətir gəlir; bu sətirlərin -ci hər birində iki tam ədəd: P(1, j) və D(1, j), bir boşluqla ayrılmış halda verilir. Növbəti sətir isə eyni formatda ikinci tətbiqi təsvir edir: -ci sətirdə P(2, j) və D(2, j) verilir. 1 \leq P(i, j) \leq 10, 1 \leq D(i, j) \leq 15000 (i = 1, 2; 1 \leq j \leq N).

Qeyd: Ola bilər ki, P(i, j) = P(k, l), bu halda və (k, l) prosedurlarının vaxtı üst-üstə düşə bilməz. Əgər i = k olarsa, bu problem deyil, çünki onlar, eyni tətbiqdə olduqlarından ardıcıl icra olunmalıdır.

Çıxış

Çıxışda dəqiq sətir olmalıdır, hər sətirdə müvafiq test üçün minimum makespan olacaq bir ədəd yazılmalıdır. Cavablar daxil olan ardıcıllığa uyğun olmalıdır (yəni -ci sətir -ci test üçün cavab olacaq).

Nümunələr

Nümunə 1

Loading
Loading