Cod sursa(job #2181811)

Utilizator AdrianNeataNeata Adrian AdrianNeata Data 21 martie 2018 21:02:24
Problema Range minimum query Scor 20
Compilator c Status done
Runda Arhiva educationala Marime 0.78 kb
#include<stdio.h>
#include<stdlib.h>
 
#define MAX 10000
 
int main()
{
    int N, Q, x, i, j, y;
    int *b;
    FILE *f, *g;
    int a[MAX][MAX];
    f = fopen("rmq.in", "rt");
    g = fopen("rmq.out", "wt");
    fscanf(f, "%d", &N);
    fscanf(f, "%d", &Q);
    //read number of integers
    for(i = 0; i < N; i++)
        fscanf(f, "%d", &a[0][i]);
    //read numbers
    for(i = 1; i < N; i++)
        for(j = 0; j < N - i; j++)
            if(a[i - 1][j] > a[i - 1][j + 1])
                a[i][j] = a[i - 1][j + 1];
            else a[i][j] = a[i - 1][j];
    b = (int *)malloc(Q * sizeof(int));
    for(i = 0; i < Q; i++){
        fscanf(f, "%d%d", &x, &y);
        b[i] = a[y - x][x - 1];
    }
    for(i = 0; i < Q; i++)
        fprintf(g, "%d\n", b[i]);
    free(b);
    return 0;
}