253982026-02-19 19:24:37miszorimarciMI bróker (50 pont)cpp17Időlimit túllépés 10/501.095s22324 KiB
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 10005;
const int MAXVAL = 505;


short p[MAXN];
short next_le[MAXVAL][MAXN];
short next_ge[MAXVAL][MAXN];

int memo[MAXVAL][MAXVAL];
bool c[MAXVAL][MAXVAL];

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int N, Q;cin >> N >> Q;

    for (int i = 0; i < N; ++i)cin >> p[i];
    
    for (int v = 1; v < MAXVAL; ++v) {
        int last = -1;
        for (int i = N - 1; i >= 0; --i) {
            if (p[i] <= v) last = i;
            next_le[v][i] = (short)last;
        }
        next_le[v][N] = -1; 
    }

    for (int e = 1; e < MAXVAL; ++e) {
        int last = -1;
        for (int i = N - 1; i >= 0; --i) {
            if (p[i] >= e) last = i;
            next_ge[e][i] = (short)last;
        }
        next_ge[e][N] = -1;
    }

    for (int q = 0; q < Q; ++q) {
        int V, E;cin >> V >> E;

        if (c[V][E]) {
            cout << memo[V][E] << "\n";
            continue;
        }

        int ans = 0;
        int t = 0;
        
        const short* n_le = next_le[V];
        const short* n_ge = next_ge[E];

        while (t < N) {
            int idx = n_le[t];
            if (idx == -1) break;

            ans -= p[idx];

            if (idx + 1 >= N) break;
            
            idx = n_ge[idx + 1];
            if (idx == -1) break;

            ans += p[idx];
            
            t = idx + 1;
        }

        memo[V][E] = ans;
        c[V][E] = true;
        cout << ans << "\n";
    }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base10/50
1Elfogadva0/04ms4596 KiB
2Időlimit túllépés0/01.087s21812 KiB
3Elfogadva1/14ms4660 KiB
4Elfogadva1/14ms4660 KiB
5Elfogadva2/27ms6540 KiB
6Elfogadva2/228ms20384 KiB
7Elfogadva2/225ms20416 KiB
8Elfogadva1/164ms21792 KiB
9Elfogadva1/1370ms21812 KiB
10Időlimit túllépés0/21.078s21580 KiB
11Időlimit túllépés0/21.082s21956 KiB
12Időlimit túllépés0/21.088s21812 KiB
13Időlimit túllépés0/21.087s21812 KiB
14Időlimit túllépés0/21.088s21812 KiB
15Időlimit túllépés0/31.088s22068 KiB
16Időlimit túllépés0/31.082s22324 KiB
17Időlimit túllépés0/31.085s22068 KiB
18Időlimit túllépés0/31.09s22068 KiB
19Időlimit túllépés0/31.09s22068 KiB
20Időlimit túllépés0/31.09s21996 KiB
21Időlimit túllépés0/31.095s21944 KiB
22Időlimit túllépés0/31.083s22068 KiB
23Időlimit túllépés0/31.087s21972 KiB
24Időlimit túllépés0/31.085s22064 KiB