Task segtree 0/100

Ho provato a fare alcune prove e il programma sembra funzionare. non riesco a trovare l’errore. Gli errori che riscontro dal portare sono per via del tempo e alcuni output non corretti

#include <numeric>
#include <vector>
#include <algorithm>

using namespace std;

vector<long long>v;

void init(vector<long long> a) {
	v=a;
}

long long get_sum(int l, int r) {
	return accumulate(v.begin()+l, v.begin()+r, 0);
}

void add(int l, int r, long long x) {
	for(vector<long long>::iterator it = v.begin()+l; it<v.begin()+r; ++it){
		*it+=x;
	}
}

void set_range(int l, int r, long long x) {
	for(vector<long long>::iterator it = v.begin()+l; it<v.begin()+r; ++it){
		*it=x;
	}
}

long long get_min(int l, int r) {
	return *min_element(v.begin()+l, v.begin()+r);
}

int lower_bound(int l, int r, long long x) {

	for(int i=l; i<r; i++){
		if(v[i]<=x){
			return i; 
		}
	}
	return -1;
}

Ciao, il titolo del problema è “Implement a segment tree”. Non penso che fare ciascuna query o update liearmente possa prendere 100/100.
Potresti guardare qualche video in cui viene spegato il funzionamento di questa struttura dati, oppure ti lascio il link alla pagina di cp-algorithms che spiega i segment tree, ma comunque guardando qua sul forum trovi molte discussioni a riguardo.

1 Mi Piace