白駿c++17952課題は終わりません!

6067 ワード

17952課題は終わりません!




問題を解く

#include <iostream>
#include <stack>
using namespace std;
void fast_io(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
}
int main()
{
    fast_io();
    int n, res = 0;
    stack<pair<int, int>> s;
    cin >> n;
    while (n--)
    {
        bool num;
        cin >> num;
        if (num) //1일때
        {
            int a, b;
            cin >> a >> b; //점수 소요시간
            s.push(make_pair(a, b));
        }
        if (!s.empty())
        {
            s.top().second--;
            if (s.top().second == 0)//다했으면 이전 과제
            {
                res += s.top().first;
                s.pop();
            }
        }
    }
    cout << res;
}
課題が終わる前に、新しいものが入ってきたら、その問題を先に解決しなければなりません.最初はifの中の条件は外で処理されたが,−1の問題が発生した.なぜなら,終了した課題を処理しなかったため,果てしない−1となったからである.
whileのifのifが終わったら、マージ結果値でエクスポートして解決します!