Pagini recente » Cod sursa (job #1718909) | Cod sursa (job #1727136) | Cod sursa (job #412049) | Cod sursa (job #546463) | Cod sursa (job #2803419)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define UPDATE 1
#define QUERY 0
#define MAX_N 100000
int v[MAX_N];
int vLength;
void update(int pos, int value) {
v[pos] = value;
}
int query(int nLeft, int nRight, int qLeft, int qRight) {
if (nLeft == nRight)
return v[nLeft];
int nMid, result;
nMid = (nLeft + nRight) / 2;
result = 0;
if (qLeft <= nMid)
result = query(nLeft, nMid, qLeft, qRight);
if (nMid < qRight)
result = max(result, query(nMid + 1, nRight, qLeft, qRight));
return result;
}
int main() {
FILE *fin, *fout;
fin = fopen("arbint.in", "r");
fout = fopen("arbint.out", "w");
int i, q, op, a, b;
fscanf(fin, "%d%d", &vLength, &q);
for (i = 0; i < vLength; ++i)
fscanf(fin, "%d", &v[i]);
while (q--) {
fscanf(fin, "%d%d%d", &op, &a, &b);
if (op == UPDATE)
update(a - 1, b);
else if (op == QUERY)
fprintf(fout, "%d\n", query(0, vLength - 1, a - 1, b - 1));
}
fclose(fin);
fclose(fout);
return 0;
}