• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Zadanie Range Minimum Query SPOJ

VPS Starter Arubacloud
0 głosów
84 wizyt
pytanie zadane 8 maja 2023 w C i C++ przez Dani Obywatel (1,450 p.)
zamknięte 8 maja 2023 przez Dani

Rozwiązuję zadanie : https://www.spoj.com/problems/RMQSQ/.
Niestety kod nie przechodzi wszystkich testów, nie mam pojęcia dlaczego.
Znacie może przyczynę? Używam drzewa przedziałowego.

#include <iostream>

using namespace std;

const int BASE = 128 * 1024;
const int MAXN = 1e5 + 5;

int numbers[MAXN];
int segtree[2 * BASE + 7];

void init(int n){
    for(int i=1;i <=n;++i){
        segtree[BASE + i] = numbers[i];
    }

    for(int i=BASE-1;i >= 1;--i){
        segtree[i] = min(segtree[2*i],segtree[2*i+1]);
    }
}

int get_min(int a,int b,int v,int l,int r){
    if(r < a || b < l)
        return 2147483647-100;
    else if(a <= l && r <= b)
        return segtree[v];
    
    int mid = (l + r) / 2;
    int ls = get_min(a,b,2*v,l,mid);
    int rs = get_min(a,b,2*v+1,mid+1,r);
    return min(ls,rs);
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int n;
    cin >> n;
    
    for(int i = 1;i <= n; ++i)
        cin >> numbers[i];
    
    for(int i=1;i<=2*BASE+3;++i)
        segtree[i] = 2147483647-100;
    init(n);
    int k;
    cin >> k;

    for(int i=0;i<k;++i){
        int left,right;
        cin >> left >> right;

        if(left > right)
        {
            int tmp = left;
            left = right;
            right = tmp;
        }

        cout << get_min(left+1,right+1,1,0,BASE-1) << '\n';
    }
    return 0;
}

 

komentarz zamknięcia: Nie doczytałem treści zadania. Trzeba było ustawić MAX_INT

Podobne pytania

0 głosów
1 odpowiedź 673 wizyt
0 głosów
2 odpowiedzi 319 wizyt

93,005 zapytań

141,969 odpowiedzi

321,248 komentarzy

62,341 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...