Pagini recente » Cod sursa (job #1281990) | Cod sursa (job #2309658) | Cod sursa (job #242835) | Cod sursa (job #1391045) | Cod sursa (job #1314052)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
const int Nrmin=0;
unsigned long int v[1000000],s[1000],maxim;
int q,a,b,m,n,c,k,j=1,i,tip;
int main()
{
fstream f("arbint.in",ios::in);
fstream g("arbint.out",ios::out);
f>>n>>m;
c=sqrt(n);
for(i=0;i<n;i++)
{
f>>v[i];
if(j==c || i==n-1)
{
if(maxim<v[i])
maxim = v[i];
j=1;
s[k]=maxim;
maxim = Nrmin;
k++;
}
else
{
if(maxim<v[i])
maxim = v[i];
j++;
}
}
afisare();
for(q=0;q<m;q++)
{
f>>tip>>a>>b;
a--;
if(tip)
{
v[a]=b;
if(b>=s[a/c])
s[a/c]=b;
else
{
maxim = Nrmin;
for(i=a/c*c;i<(a/c+1)*c;i++)
if(v[i]>maxim)
maxim=v[i];
s[a/c]=maxim;
}
}
else
{
b--;
maxim = Nrmin;
for(i=a;i<(a/c+1)*c && i<=b;i++)
if(v[i]>maxim)
maxim=v[i];
for(i=a/c+1;i<b/c;i++)
if(s[i]>maxim)
maxim=s[i];
if(a/c!=b/c)
for(i=b/c*c;i<=b;i++)
if(v[i]>maxim)
maxim = v[i];
g<<maxim<<endl;
}
}
return 0;
}