Google-Kick Start, ROUND-A, Распределение: - Тестовый набор пропущен - PullRequest
0 голосов
/ 22 марта 2020

Я участвовал в Kick Start и попытался ответить на этот вопрос:

Проблема

Есть N домов на продажу. I-й дом стоит Ai долларов на покупку. У вас есть бюджет в B долларов.

Какое максимальное количество домов вы можете купить?

Ввод

Первая строка на входе указывается количество тестовых случаев, за которыми следуют T. Каждый тестовый пример начинается с одной строки, содержащей два целых числа N и B. Вторая строка содержит N целых чисел. I-е целое число - это Ai, стоимость i-го дома.

Вывод

Для каждого тестового примера выведите одну строку, содержащую Case #x: y где x - это номер тестового набора (начиная с 1), а y - максимальное количество домов, которое вы можете купить.

Полный вопрос: - https://codingcompetitions.withgoogle.com/kickstart/round/000000000019ffc7/00000000001d3f56

И это был мой код

t = int(input())
if 1 <= t <= 100:
    for case in range(t):
        n, b = map(int, input().split())
        a = map(int, input().split())
        s, c = 0, 0
        for i in sorted(a):
            s += i
            if s <= b:
                c += 1
            else:
                print("Case #{0}: {1}".format(case+1, c))
                break

Я продолжал пропускать набор тестов, я просто хочу знать, что не так с моим кодом?

Есть ли какой-нибудь возможный набор тестов, где это решение победило не работает?

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Считайте, что это принято,

#include <bits/stdc++.h>

using namespace std ;
int main() {
    int t ; cin >> t ;
    for(int cs = 1 ; cs <= t ; cs ++) {
        int n , b , cnt = 0 ; cin >> n >> b ;
        vector<int> a(n) ; for(int i = 0 ; i < n ; i ++) cin >> a[i] ;
        sort(a.begin(), a.end()) ;
        for(int i = 0 ; i < n ; i ++) {
            if(a[i] > b) break ;
            else {
                b -= a[i] ;
                cnt ++ ;
            }
        }
        printf("Case #%d: %d\n", cs, cnt) ;
    }
}


0 голосов
/ 22 марта 2020

Есть одна проблема: если все дома можно купить, код ничего не печатает. Это можно исправить, просто переместив строку print("Case #{0}: {1}".format(case+1, c)) после внутреннего l oop.

...