Pagini recente » Cod sursa (job #2319286) | Cod sursa (job #2813465) | Cod sursa (job #1201483) | Cod sursa (job #2543786) | Cod sursa (job #1550221)
#include <fstream>
#include <math.h>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int n,n1,m,querry,a[100005],b[1005];
int main()
{
int i,x,y,radical,k,p,max;
in>>n>>m;
radical=int(sqrt(n));
for(i=0;i<n;i++) in>>a[i];
k=0;
p=0;
//out<<radical<<endl;
for(i=0;i<n;)
{
max=0;
for(k=1;k<=radical;k++,i++)
{
if(a[i]>max) max=a[i];
}
b[p]=max;
p++;
}
//for(i=0;i<p;i++) out<<b[i]<<" ";
//out<<endl;
for(i=1;i<=m;i++)
{
in>>querry>>x>>y;
if(querry==1)
{
max=0;
a[x-1]=y;
if(x%radical==0) x--;
for(k=x/radical;k<=x/radical+radical;k++)
{
if(a[i]>max) max=a[i];
}
b[x/radical]=max;
}
if(querry==0)
{
max=0;
x--;
y--;
while(x%radical!=0)
{
if(a[x]>max) max=a[x];
x++;
}
if(y%radical==0)
{
if(a[y]>max) max=a[y];
y--;
while(y%radical!=0)
{
if(a[y]>max) max=a[y];
y--;
}
}
for(k=x/radical;k<=y/radical;k++)
{
if(b[k]>max) max=b[k];
}
out<<max<<endl;
}
}
in.close();
out.close();
return 0;
}