답안 #576531

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
576531 2022-06-13T07:17:35 Z Naser Fountain (eJOI20_fountain) C++17
60 / 100
77 ms 10316 KB
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define pii pair<int,int>
#define vint vector<int>
#define se second
#define fi first
#define pb push_back
#define all(x) x.begin(), x.end()
using namespace std; 

int32_t main() {

    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);


    int t = 1;
     //cin >> t;
    while (t--) {
        int n, q;
        cin >> n >> q;
        vint d(n);
        vint c(n);
        for (int i = 0; i < n; i++) {
            cin >> d[i] >> c[i];
        }
        int prf[1000001] = {};
        prf[0] = c[0];
        for(int i = 1; i < n; i++){
            prf[i] = prf[i - 1] + c[i];
        }
        if(n > 1000){
            while(q--){
                int x,y;
                cin >> x >> y;
                x--;
                if(x != 0){
                    y+= prf[x - 1];
                }
                // cout << y  << ";" << endl;
                int ans =  lower_bound(prf, prf + n, y)- prf;
                if(ans == n){
                    cout << 0 << endl; continue;
                }
                cout << ans + 1 << endl;
            }
            return 0;
        }
        while (q--) {
            int x, y;
            cin >> x >> y;
            int pos = x - 1;
            if (c[pos] >= y) {
                cout << x << endl;
                continue;
            }
            else {
                y -= c[pos];
            }
            for (int i = x; i < n; i++) {
                if (d[i] > d[pos]) {
                    pos = i;
                    if (c[i] >= y) {
                        y = 0;
                        break;
                    }
                    else {
                        y -= c[i];
                        pos = i;
                    }
                }
                
            }
            if (y){
                cout << 0 << endl;
                continue;
            }
            cout << pos + 1 << endl;
        }
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 8020 KB Output is correct
2 Correct 5 ms 8148 KB Output is correct
3 Correct 4 ms 8148 KB Output is correct
4 Correct 4 ms 8148 KB Output is correct
5 Correct 5 ms 8148 KB Output is correct
6 Correct 8 ms 8148 KB Output is correct
7 Correct 4 ms 8148 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 65 ms 10312 KB Output is correct
2 Correct 77 ms 10316 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 8020 KB Output is correct
2 Correct 5 ms 8148 KB Output is correct
3 Correct 4 ms 8148 KB Output is correct
4 Correct 4 ms 8148 KB Output is correct
5 Correct 5 ms 8148 KB Output is correct
6 Correct 8 ms 8148 KB Output is correct
7 Correct 4 ms 8148 KB Output is correct
8 Correct 65 ms 10312 KB Output is correct
9 Correct 77 ms 10316 KB Output is correct
10 Incorrect 5 ms 8148 KB Output isn't correct
11 Halted 0 ms 0 KB -