Pagini recente » Cod sursa (job #291521) | Cod sursa (job #2895717) | Cod sursa (job #2616227) | Cod sursa (job #553490) | Cod sursa (job #668938)
Cod sursa(job #668938)
#include<fstream>
#include<vector>
using namespace std;
#define nmax 400005
#define maxim(a,b) (a<b)? b:a
int n,m,a,b,x,i,j,ma,sem;
int ar[nmax];
void actu(int,int,int);
void inter(int,int,int);
int main() {
ifstream f("arbint.in",ifstream::in);
ofstream g("arbint.out",ifstream::out);
f>>n>>m;
for (i=1;i<=n;i++) {
f>>x;
actu(1,1,n);
}
for (j=1;j<=m;j++) {
f>>sem>>a>>b;
if (!sem) {
ma=0;
inter(1,1,n);
g<<ma<<'\n';
}
else {
x=b;
i=a;
actu(1,1,n);
}
}
return 0;
}
void actu (int rad, int st, int dr) {
if (st==dr) {
ar[rad]=x;
return;
}
else {
int mij=(st+dr)/2;
if (i<=mij)
actu(2*rad, st, mij);
else
actu(2*rad +1, mij+1,dr);
ar[rad]=maxim(ar[2*rad],ar[2*rad+1]);
}
}
void inter (int rad, int st, int dr) {
if (a<=st && b>=dr) {
if (ma<ar[rad])
ma=ar[rad];
}
else {
int mij=(st+dr)/2;
if (a<=mij)
inter(rad*2,st,mij);
if (b>mij)
inter(2*rad+1,mij+1,dr);
}
}