Решение задачи "Покупка игр" с Codeforces

Без пояснения   Просмотров: 13


Максим хочет купить себе несколько игр в игровом магазине. Всего в магазине есть n игр, i-я игра стоит ci.

У Максима есть бумажник, который можно представить в виде массива целых чисел. В его бумажнике есть m купюр, номинал j-й купюры — aj.

Игры в магазине пронумерованы в порядке слева направо, Максим пытается купить каждую игру в этом порядке.

Когда Максим находится на позиции i в магазине, он берет первую купюру из его бумажника (если его бумажник пустой, то он просто сразу же переходит к следующей позиции) и пытается купить i-ю игру, используя эту банкноту. После попытки купить n-ю игру Максим покидает магазин.

Максим покупает i-ю игру тогда и только тогда, когда номинал первой банкноты (которую он достает) из его бумажника больше либо равен цене i-й игры. Если он успешно покупает i-ю игру, первая банкнота из его бумажника пропадает и следующая по счету становится первой. Иначе Максим возвращает первую банкноту в свой бумажник (эта банкнота остается первой) и переходит к следующей игре.

Например, для массива c=[2,4,5,2,4] и массива a=[5,3,4,6] будет происходить следующее: Максим покупает первую игру, используя первую банкноту (ее номинал равен 5), она пропадает, и вторая банкнота (ее номинал равен 3) становится первой в бумажнике Максима. Затем Максим не покупает вторую игру, потому что c2>a2, то же самое происходит с третьей игрой, затем он покупает четвертую игру, используя банкноту с номиналом a2 (третья банкнота становится первой в бумажнике Максима), и покупает пятую игру, используя банкноту с номиналом a3.

Ваша задача — сообщить, сколько игр купит Максим.

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n, m;
    cin >> n >> m;
    vector<int> a(n);
    vector<int> b(m);
    for(int i = 0; i < n; ++i){
        cin >> a[i];
    }
    for(int i = 0; i < m; ++i){
        cin >> b[i];
    }
    int k = 0, j = 0;
    for(int i = 0; i < n; ++i){
        if(b[j] >= a[i] && j < m){
            ++k;
            ++j;
        }
    }
    cout << k;
//    5 4
//    2 4 5 2 4
//    5 3 4 6
    return 0;
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться