Pagini recente » Cod sursa (job #2837465) | Monitorul de evaluare | Cod sursa (job #1824967) | Cod sursa (job #1628544) | Cod sursa (job #1036679)
//
// main.cpp
// arbint
//
// Created by Catalina Brinza on 11/19/13.
// Copyright (c) 2013 Catalina Brinza. All rights reserved.
//
#include <iostream>
#include <fstream>
#include <math.h>
#include <vector>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int main()
{int n,m,k,p,q,x,i,j,maxi;
int a[1000001];
int max[50001];
f>>n>>m;
k=sqrt(n);
for (i=0;i<=n/k+1;i++) max[i]=0;
for (i=1;i<=n;i++)
{
f>>a[i];
if (a[i]>max[i/k]) max[i/k]=a[i];
}
for (i=0;i<m;i++)
{
f>>x>>p>>q;
if (x==1)
{
int y=a[p];
a[p]=q;
if (max[p/k]==y)
{
max[p/k]=0;
for (j=(p/k)*k;j<(p/k+1)*k;j++)
if (max[p/k]<a[j]) max[p/k]=a[j];
}
if (a[p]>max[p/k]) max[p/k]=a[p];
}
else
{
if (p==q) maxi=a[p];
else {maxi=a[p];
for (j=p/k+1;j<q/k;j++)
if (maxi<max[j]) maxi=max[j];
for (j=p+1;j<(p/k+1)*k;j++)
if (maxi<a[j]) maxi=a[j];
for (j=(q/k)*k;j<=q;j++)
if (maxi<a[j]) maxi=a[j];}
g<<maxi<<"\n";
}
}
return 0;
}