Mai intai trebuie sa te autentifici.
Cod sursa(job #854587)
Utilizator | Data | 13 ianuarie 2013 19:23:11 | |
---|---|---|---|
Problema | Arbori de intervale | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.82 kb |
#include <stdio.h>
using namespace std;
int n,m;
long v[100000];
int maxim(int a,int b)
{
int i,mx,aux;
if (b<a){
aux=a;
a=b;
b=aux;
}
mx=v[a];
for(i=a+1;i<=b;i++)
if (mx<v[i]) mx=v[i];
return mx;
}
void inversare(int a,int b)
{
v[a]=b;
}
int main()
{
int i,op,a,b;
FILE*f,*g;
f=fopen("arbori.in","r");
g=fopen("arbori.txt","w");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
fscanf(f,"%ld",&v[i]);
for(i=1;i<=m;i++)
{
fscanf(f,"%d",&op);
fscanf(f,"%d",&a);
fscanf(f,"%d",&b);
switch(op)
{
case 0: {fprintf(g,"%d\n",maxim(a,b)); break;}
case 1: {inversare(a,b); break;}
}
}
return 0;
}