Pagini recente » Cod sursa (job #1323873) | Cod sursa (job #719268) | Cod sursa (job #226103) | Cod sursa (job #2810111) | Cod sursa (job #3199975)
// Ilie Dumitru
#include<fstream>
#include<iostream>
const int NMAX=100005, BLK=300;
int N;
int v[NMAX], max[NMAX/BLK+5];
int blockId(int i)
{
return i/BLK;
}
void init()
{
int i;
for(i=0;i<N;++i)
max[blockId(i)]=std::max(max[blockId(i)], v[i]);
}
int main()
{
std::ifstream f("arbint.in");
std::ofstream g("arbint.out");
int i, Q, op, a, b, M;
f>>N>>Q;
for(i=0;i<N;++i)
f>>v[i];
for(int _=0;_<Q;++_)
{
f>>op>>a>>b;
if(op==0)
{
--a;
--b;
M=0;
for(i=a;i<=b && blockId(i)==blockId(a);++i)
{
M=std::max(M, v[i]);
}
for(i=b;i>=a && blockId(i)==blockId(b);--i)
{
M=std::max(M, v[i]);
}
for(i=blockId(a)+1;i<blockId(b);++i)
{
M=std::max(M, max[i]);
}
g<<M<<'\n';
}
else
{
--a;
if(v[a]==max[blockId(a)] && v[a]>b)
{
v[a]=b;
max[blockId(a)]=b;
for(i=blockId(a)*BLK;i<N && blockId(i)==blockId(a);++i)
max[blockId(a)]=std::max(max[blockId(a)], v[i]);
}
else
{
max[blockId(a)]=std::max(max[blockId(a)], b);
v[a]=b;
}
}
}
return 0;
}