.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » lanterna

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
lanterna


Timp maxim de execuţie / test:
0.2s
Memorie totala disponibilă / stivă:
16MB / 1MB

Un agent secret are o hartă pe care sunt marcate N obiective militare. El se află, iniţial, lângă obiectivul numerotat cu 1 (baza militară proprie) şi trebuie să ajungă la obiectivul numerotat cu N (baza militară inamică). În acest scop, el va folosi drumurile existente, fiecare drum legând 2 obiective distincte. Fiind o misiune secretă, deplasarea agentului va avea loc noaptea; de aceea, el are nevoie de o lanternă. Pentru aceasta, el are de ales intre K tipuri de lanterne – o lanternă de tipul W (1 <= W <= K) are baterii care permit consumul a W waţi, după consumul acestor waţi, lanterna nu mai luminează. Din fericire, unele dintre obiective sunt baze militare prietene, astfel că, o dată ajuns acolo, el îşi poate reîncărca bateriile complet. Agentul trebuie sa aibă grijă ca, înainte de a merge pe un drum între două obiective, cantitatea de waţi pe care o mai poate consuma să fie mai mare sau egală cu cantitatea de waţi pe care o va consuma pe drumul respectiv.

Cerinţă

Cunoscând drumurile dintre obiective şi, pentru fiecare drum, durata necesară parcurgerii drumului şi numărul de waţi consumaţi de lanternă, determinaţi tipul de lanternă cu numărul cel mai mic, astfel încât durata deplasării sa fie minimă (dintre toate tipurile de lanternă cu care se poate ajunge în timp minim la destinaţie, interesează lanterna cu consumul cel mai mic).

Date de intrare

Pe prima linie a fişierului lanterna.in se află numerele întregi N şi K, separate printr-un spaţiu. Pe următoarea linie se află N numere întregi din mulţimea {0,1}. Daca al i-lea număr este 1, aceasta înseamnă că obiectivul cu numărul i este o bază militară prietenă (adică agentul îşi poate reîncărca bateriile lanternei daca ajunge la acest obiectiv); dacă numărul este 0, agentul nu îşi va putea reîncărca bateriile. Primul număr din linie este 1, iar ultimul este 0. Pe cea de-a treia linie a fişierului se află numărul M de drumuri dintre obiective. Fiecare din următoarele M linii conţine câte 4 numere întregi separate prin spaţii: a b T W, având semnificaţia că există un drum bidirecţional între obiectivele a şi b (a<>b), care poate fi parcurs într-un timp T şi cu un consum de W waţi.

Date de ieşire

In fişierul lanterna.out se vor afişa două numere întregi, separate printr-un spaţiu : Tmin şi Wmin. Tmin reprezentând durata minimă posibilă a deplasării de la obiectivul 1 la obiectivul N, iar Wmin reprezintă tipul de lanternă cu numărul cel mai mic pentru care se obţine acest timp.

Restricţii

2 <= N <= 50
1 <= K <= 1000
1 <= M <= N*(N-1)/2

Între două oraşe diferite poate exista maximum un drum direct.
Pentru fiecare drum, durata parcurgerii este un număr întreg intre 1 şi 100, iar numărul de waţi consumaţi este un număr întreg între 0 şi 1000
Se garantează că există cel puţin un tip de lanternă pentru care deplasarea să fie posibilă.

Exemple

lanterna.inlanterna.out
7 10 1 0 1 0 0 0 0 7 1 2 10 3 1 4 5 5 2 3 10 3 4 3 15 1 3 6 4 3 6 5 2 2 5 7 1 0 27 6

autor: Mugurel Ionuţ Andreica
propunător: Prof. Marinel Şerban
Liceul de Informatică “Grigore Moisil”
marinel_serban@yahoo.com
Articole recomandate
Probleme recomandate
De la OJI 2004: cifre3, concurs3, control, exp1, joc13, mosia, perle, popas, reactivi, rj, ron, siruri1, vanatoare
De acelaşi autor: autobuze, bile, complex, balaur, vmem, kreg, ro, jobs, senzori, echipe, agitatie, center, algebra, tgraf, bcast, promo, asmax, sediu, granita, string, poligon1, csir, lsort, zoo, bombo, ab3, soc, rsp, tcast, tj, base3, color, trans, ic, xp, v2d, ppcover, carray, asfalt1, module, gxor
Despre coada: balanta, inginer, camp, rebus, harta, insule, volei, lbd, magic3, axa, cadere, reinvent, ocean14, iepuras2, sah, balls, cd, toys, radio, caini, subperm, castel, excursia, casute, soricel2, masina2, salvare, paianjen, suma2, garaj, alee, rj, caraibe, taxe1, sotron1, lanturi, tom, k1, dreptunghiuri, sokoban, ny, oldest, drumuri1, alpinist, tsunami, robot3, joc19, valet, oras1, gheizere, zone, taxa, abq, cartite, joc21, traseu3, panda, expand
Despre graf: gropi, tgv, matrice2, miniasm, picnic, mere, circuit, soldati, arce, conflicte, desen, robot, furtuna, net, cuvinte, excursie, cadere, pioni, reinvent, kreg, flood, croco, johnie, matrice, arthur, kimberley, ro, sol, caravane, bete, honest, police, pcod, zmeu, auto2, grazing, datorii, trafic, sponsori, monede1, apm, bile1, caini, masina1, bomboane, turn1, shgraf, paintball, program1, tgraf, kgb, algola, felinar, joc6, tric, homeless, promo, turism, casute, joc10, prieteni1, traseu, zapezi, litoral, lover, trip, garaj, ziduri, tv, pact, echipe1, vitale, spion, trasee, bcolor, scara2, lant, ab3, soc, team, gard, rsp, graf, mexc, dep, albinuta1, atac2, cabane, drumuri, tj, grade, jungla, magic5, coment, urgenta, fazan, lanturi, cfr, site, traseu1, trmv, graphgame, minuni, telefon, ubergraf, carray, pestera, chei, arbgraf, war, fluviu, drumuri1, entries, ubuntzei, pack, fotbal1, pamant, dag, razboi, benzina2, wg, neconex, asfalt1, kubus2, module, progresii, dfs, prieteni3, megascoala, grafxy, dineu, vot1, biperm, drumuri2, nrgraf, cristal, cartite, copaci3, dragoni, nuclee
Despre căutare binară: gropi, pod, uscat, checkin, copaci, aven, br, furtuna, livada, numar, matrice, sume, bacan, toys, chimie2, trafic, ants, multiplu, ghici, sirag1, tabara, puncte1, centru, harta1, salvare, spion, poze, dist1, patrate5, resturi, sea2, vot, standard, cantor, medalii, binperm, mobil, stalpi1, expo, miere, conferinta, subs, pack, obstacole, dag, acoperire, verigi, bradut2, triburi, intervale, mijloc, patru, eliminare, vectori1, calcule, secvp, dreapta, colina, ssk, robotics, cabana
surse trimise | ajutor