Pagini recente » Cod sursa (job #552016) | Cod sursa (job #2096572) | Cod sursa (job #1900324) | Cod sursa (job #788307) | Cod sursa (job #664404)
Cod sursa(job #664404)
#include<fstream>
#include<vector>
using namespace std;
#define nmax 200000
#define maxim(a,b) (a<b)? b:a
int n,m,a,b,x,i,j,max,sem;
vector<int> ar[nmax];
void actu (int rad, int st, int dr) {
if (st==dr)
ar[rad]=x;
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 (max<ar[rad]) {
max=ar[rad];
return;
}
}
else {
int mij=(st+dr)/2;
if (a<=mij)
inter(rad*2,st,mij);
if (b>mij)
inter(2*rad+1,mij+1,dr);
}
}
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) {
max=0;
inter(1,1,n);
g<<max<<'\n';
}
else {
x=b;
i=a;
actu(1,1,n);
}
}
return 0;
}