как избежать TLE если Q >=1000001
не знаю как избежать TLE, вот задача: Напишите код на С++: Вам будет задано Q запросов двух типов: "+x" - означает добавить число x в конец массива. "?L R" - означает найти сумму чисел в интервале [L, R] массива, т.е. A[L] + A[L+1] + ... + A[R].
Входные данные: Первая строка содержит натуральное число Q, обозначающее количество запросов (Q < 1000001). В следующих Q строках каждый запрос представляет собой либо «+ x», либо «? L R», где x, L и R — натуральные числа (|x| <1000, 1 <= L <= R <= 10^6) .
Обратите внимание, что массив изначально пуст, и предполагается, что массив проиндексирован с 1.
Проблема в том если Q >=1000001 то код очень медленно считает, может есть какие-то варианты как можно ускорить код? Вот код:
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int q, x, l, r, sum,k=0;
char b;
cin>>q;
vector<int> a(q, 0);
for (int i=1; i<=q; i++){
cin>>b;
if (b=='+') {
cin>>x;
k++;
a[k]=a[k-1]+x;
}
else if(b=='?'){
cin>>l>>r;
sum=a[r]-a[l-1];
cout<<sum<<endl;
}
}
}
Источник: Stack Overflow на русском