제출 #484185

#제출 시각아이디문제언어결과실행 시간메모리
484185mdubFountain (eJOI20_fountain)C++14
30 / 100
1592 ms3352 KiB
#include <iostream>
#include <vector>

using namespace std;

struct reservoir{
    int diameter = 0;
    int capacity = 0;
};
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int numReservoirs, numQueries;
    cin >> numReservoirs >> numQueries;
    vector<reservoir> fountain(numReservoirs);
    for (int i = 0; i < numReservoirs; i++) {
        cin >> fountain[i].diameter >> fountain[i].capacity;
    }
    int iReservoir, numLiters, iLastReservoir;
    bool overflow = false;
    for (int i = 0; i < numQueries; i++) {
        overflow = false;
        cin >> iReservoir >> numLiters;
        iReservoir--;
        iLastReservoir = iReservoir;
        numLiters -= fountain[iReservoir].capacity;
        iReservoir++;
        if (numLiters <= 0) {
            iReservoir--;
        }
        while (numLiters > 0) {
            //cout << "iReservoir: " << iReservoir << " " << "numLiters: " << numLiters << " ";
            if (iReservoir == numReservoirs) {
                overflow = true;
                break;
            }
            else if (fountain[iReservoir].diameter > fountain[iLastReservoir].diameter) {
                //cout << fountain[iReservoir].diameter << "bigger than " << fountain[iLastReservoir].diameter << " ";
                numLiters -= fountain[iReservoir].capacity;
                if (numLiters <= 0) {
                    break;
                }
                iLastReservoir = iReservoir;
            }
            iReservoir++;
        }
        if (overflow) {
            cout << 0 << "\n";
        }
        else cout << ++iReservoir << "\n";
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...