fbpx

Problema #91 – Masini – Rezolvari PBInfo

de Mihai-Alexandru

În curtea unui atelier de reparaţii auto, sunt n maşini care trebuie sa fie reparate. Deoarece nu sunt suficienţi mecanici, în fiecare moment de timp se poate lucra doar la o singură maşină.

Cerinţa

Cunoscând timpul necesar pentru repararea fiecărei maşini, scrieţi un program care calculează numărul maxim de maşini care pot fi reparate într-un interval de timp T.

Date de intrare

Pe prima linie a fişierului masini.in se găsec două numere naturale n şi T separate printr-un singur spaţiu, reprezentând numărul de maşini din curtea atelierului auto şi timpul total în care se va lucra.

Pe linia a doua, separate prin câte un spaţiu, se găsesc n numere naturale t1, t2, …, tn, reprezentând timpii necesari pentru repararea fiecărei maşini.

Date de ieşire

Pe prima linie a fişierului masini.out se va găsi un număr natural k, reprezentând numărul maxim de maşini care pot fi reparate.

Restricţii şi precizări

  • 1 < n, T <= 1000
  • numerele de pe a doua linie a fişierului de intrare vor fi mai mici sau egale cu 100

Exemplu

masini.in

5 10
6 2 4 8 2 

masini.out

3

Explicație

Se vor repara masinile 2, 3 şi 5, cu timpii de reparaţie 2, 4 şi 2.

#include <bits/stdc++.h>

using namespace std;

ifstream cin("masini.in");
ofstream cout("masini.out");

int n , a[1001] , T , s , cnt;

int main()
{
    cin >> n >> T;
    for(int i = 1 ; i <= n ; i++)
        cin >> a[i];

    sort(a + 1 , a + n + 1);

    for(int i = 1 ; i <= n ; i++)
        if(s + a[i] <= T) s += a[i] , cnt++;

    cout << cnt;
}
Comentarii

S-ar putea sa iti placa