Cod sursa(job #683146)

Utilizator impulseBagu Alexandru impulse Data 20 februarie 2012 07:54:19
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<iostream>
#include<stdio.h>

#define filein "arbint.in"
#define fileout "arbint.out"

#define nMax 100001

struct op
{
    bool tOp;
    int a, b;
};

int A[nMax], N, M;
op B[nMax];
FILE* fin, *fout;
int citeste()
{
    fin = fopen(filein, "r");
    fout = fopen(fileout, "w");
    fscanf(fin, "%d %d", &N, &M);
    for(int i = 1; i <= N; i++) fscanf(fin, "%d", &A[i]);
    for(int i = 0; i < M; i++)
       fscanf(fin, "%d %d %d", &B[i].tOp, &B[i].a, &B[i].b);
    fclose(fin);
    return 0;
}

int intervMax(int _i, int _j)
{
    int max = 0;
    for(int i = _i; i <= _j; i++)
        if(max < A[i])
            max = A[i];
    return max;
}

int print(int val)
{
    fprintf(fout, "%d\n", val);
    return 0;
}

int exec()
{
    for(int i = 0; i < M; i++)
        if(B[i].tOp)
            A[B[i].a] = A[B[i].b];
        else
            print(intervMax(B[i].a, B[i].b));
    return 0;
}

int main()
{
    citeste();
    exec();
    return 0;
}