ТЛ на одном тесте

239
26 октября 2017, 09:42

Доброго времени суток! Решал задачу, условие прилагается. Проблема в том, что на одном тесте выдает ошибку времени (ограничение в полсекунды). Ускорение ввода проблему не решило. Вопрос: есть ли у меня подводный камень в коде, или возможна ошибка в тестах? Заранее спасибо

EDIT : файлы действительно те, в пдф условии неправильно указано про станд. ввод/вывод

Код таков :

#include <iostream>
#include <fstream>
using namespace std;
int main() {
    long n, m;
    ifstream fin ("input.txt");    //   FILES
    ofstream fout ("output.txt"); // ASSIGNMENTS
    // INPUT //
    fin >> n; // Quantity of required decks
    long requiredDecks[n]; // Array of required decks for the tricks
    for (long i = 0; i < n; i++)
        fin >> requiredDecks[i];
    fin >> m; // Quantity of decks in stock
    long checker[100] = {0}; // Array of existence of all possible decks in stock
    for (long i = 0; i < m; i++) {
        long deck;
        fin >> deck;
        checker[deck]++;
    }
    // END OF INPUT //
    // MAIN PART OF PROGRAM //
    for (long i = 0; i < n; i++)
        if (checker[requiredDecks[i]] < 1) { // Checking for non-existence of concrete deck in hands
            fout << "NO" << endl;
            return 0;
        }
        else
            --checker[requiredDecks[i]];
    // END OF MAIN PART //
    fout << "YES" << endl;
    return 0;
}

Answer 1

хранить все миллионы чисел не нужно. Нужно просто составить список, сколько карт и каких есть и просто потом сравнить два списка. Я минимально пофиксил, но чуточку исправил. Ну не давать же полный ответ.

#include <iostream>
#include <fstream>
using namespace std;
int main() {
    long n, m;

    // INPUT //
    cin >> n; // Quantity of required decks
    long requiredDecks[56] = {0}; // Array of required decks for the tricks
    for (long i = 0; i < n; i++) {
        long t;
        cin >> t;
        requiredDecks[t-1]++;
    }
    cin >> m; // Quantity of decks in stock
    long checker[56] = {0}; // Array of existence of all possible decks in stock
    for (long i = 0; i < m; i++) {
        long deck;
        cin >> deck;
        checker[deck-1]++;
    }
    // END OF INPUT //
    // MAIN PART OF PROGRAM //
    for (long i = 0; i < 56; i++)
        if (checker[i] < requiredDecks[i]) {
            cout << "NO" << endl;
            return 0;
        }
    // END OF MAIN PART //
    cout << "YES" << endl;
    return 0;
}
READ ALSO
Не добавляется класс после удаления jquery

Не добавляется класс после удаления jquery

Хочу реализовать удаление и появления фотографий с использованием классов

327
prepend переворачивает результат

prepend переворачивает результат

Делаю цикл, обрабатывая json массив, получаю в итоге переменную с кучей option которые нужно вставить в начало select, делаю prepend и он вставляет их перевернутымиПробовал...

194
jquery активный chekbox

jquery активный chekbox

есть чекбоксы установленные на фильтр, мне нужна проверка если отмечен хоть один чекбокс , то скрыть определенный блокЯ отмечаю чекбокс,...

289
Оптимизация изображений в галерее

Оптимизация изображений в галерее

Доброго времени суток :)

191