Pagini recente » Cod sursa (job #1478791) | Cod sursa (job #923257) | Cod sursa (job #58781) | Cod sursa (job #1930810) | Cod sursa (job #2814339)
#include <stdio.h>
#include <stdlib.h>
///---BATOG---///
int v[100001];
int v2[1002];
FILE *fin,*fout;
int Citire(){
int x;
char a;
a=fgetc(fin);
while(a<'0' || a>'9'){
a=fgetc(fin);
}
x=0;
while(a>='0' && a<='9'){
x*=10;
x+=a-'0';
a=fgetc(fin);
}
return x;
}
int main(){
int n,m,i,n2,a,b,c,aux,a2,j,ma;
fin=fopen("arbint.in","r");
fout=fopen("arbint.out","w");
fscanf(fin,"%d%d ",&n,&m);
n2=1;
while(n2*n2<=n){
n2++;
}
n2--;
for(i=1;i<=n;i++){
v[i]=Citire();
if(v2[i/n2]<v[i]){
v2[i/n2]=v[i];
}
}
for(i=0;i<m;i++){
a=Citire();
b=Citire();
c=Citire();
if(a==0){
a=b;
b=c;
aux=a/n2;
j=a;
ma=0;
while(j/n2==aux && j<=b){
if(ma<v[j]){
ma=v[j];
}
j++;
}
j=j/n2;
while((j+1)*n2<=b){
if(ma<v2[j]){
ma=v2[j];
}
j++;
}
j=j*n2;
while(j<=b){
if(ma<v[j]){
ma=v[j];
}
j++;
}
fprintf(fout,"%d\n",ma);
}else{
a=b;
b=c;
if(v[a]<b){
if(v2[a/n2]<b){
v2[a/n2]=b;
}
v[a]=b;
}else{
a2=v[a];
v[a]=b;
if(v2[a/n2]==a2){
j=(a/n2)*n2;
aux=a/n2;
v2[aux]=0;
while(j/n2==aux){
if(v2[aux]<v[j]){
v2[aux]=v[j];
}
j++;
}
}
}
}
}
fclose(fin);
fclose(fout);
return 0;
}