Pagini recente » Cod sursa (job #1517944) | Cod sursa (job #967134) | Cod sursa (job #1408957) | Cod sursa (job #1400068) | Cod sursa (job #1060659)
#include <fstream>
using namespace std;
ifstream in("sequencequery.in");
ofstream out("sequencequery.out");
const int MAX_M = 100000;
int v[MAX_M], m, n, a, b, sol, i;
struct sir{
int sum;
int prefix;
int sufix;
}t[1<<18];
int maxim(int a, int b, int c){
if(a < b){
if(b < c){
return c;
} else{
return b;
}
} else {
if(a < c){
return c;
} else {
return a;
}
}
}
void initialize(int p, int st, int dr){
if(st == dr){
t[p].sum = t[p].prefix = t[p].sufix = v[st];
return;
}
int m = (st+dr)/2;
initialize(2*p, st, m);
initialize(2*p+1, m+1, dr);
t[p].sum = maxim(t[2*p].sum, t[2*p+1].sum, t[2*p].sufix+t[2*p+1].prefix);
}
int main()
{
in >> n >> m;
for(i = 0; i < n; i++){
in >> v[i];
}
initialize(1,1,n);
for(i = 1; i < 1<<18; i++){
out << t[i].sum << t[i].prefix << t[i].sufix << "\n";
}
/*for(i = 0; i < m; i++){
in >> a >> b;
query();
out << sol << "\n";
}*/
return 0;
}