Î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 t
1
, t
2
, …, t
n
, 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; }