Pagini recente » Cod sursa (job #2410874) | Cod sursa (job #480112) | Cod sursa (job #3003944) | Cod sursa (job #1716851) | Cod sursa (job #982960)
Cod sursa(job #982960)
#include <fstream>
#include <cstdio>
#include <cctype>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int mx[1<<19];
int p,x,y;
void insert(int a,int i,int j){
if(i==j){
mx[a]=x;
return;
}
int m=(i+j)>>1;
if(p>m) insert((a<<1)+1,m+1,j);
else insert(a<<1,i,m);
mx[a]=mx[a<<1];
if(mx[(a<<1)+1]>mx[a]) mx[a]=mx[(a<<1)+1];
return;
}
int query(int a,int i,int j){
if(x<=i&&j<=y)
return mx[a];
int m=(i+j)>>1,a1=0,a2=0;
if(x<=m) a1=query(a<<1,i,m);
if(y>m) a2=query((a<<1)+1,m+1,j);
if(a2>a1) a1=a2;
return a1;
}
int main()
{
int n,m;
char a[2000010]={};
f.getline(a,100);
n=m=0;
int q=0;
while(isdigit(a[q]))
n+=n*9+a[q++]-'0'; q++;
while(isdigit(a[q]))
m+=m*9+a[q++]-'0'; q++;
int x1,y1,cd;
f.getline(a,2000000);
q=0;
for(int i=1;i<=n;i++){
x1=0;
while(isdigit(a[q]))
x1+=x1*9+a[q++]-'0'; q++;
x=x1,p=i;
insert(1,1,n);
}
for(int t=1;t<=m;t++){
f.getline(a,100);
x1=y1=0;
q=0;
cd=a[q++]-'0'; q++;
while(isdigit(a[q]))
x1+=x1*9+a[q++]-'0'; q++;
while(isdigit(a[q]))
y1+=y1*9+a[q++]-'0'; q++;
if(cd){
x=y1,p=x1;
insert(1,1,n);
}
else{
x=x1,y=y1;
g<<query(1,1,n)<<'\n';
// fprintf("%d\n",query(1,1,n));
}
}
return 0;
}