Cod sursa(job #649916)

Utilizator cosmin.tarsichiTarsichi Cosmin cosmin.tarsichi Data 16 decembrie 2011 21:41:34
Problema Range minimum query Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.03 kb


#include <stdio.h>
#include <stdlib.h>

unsigned int min(unsigned int a,unsigned int b)
{
    if(a>b)
        return b;
    return a;
}
int main() 
{
    FILE *fin,*fout;
    fin=fopen("rmq.in","r");
    fout=fopen("rmq.out","w");
    unsigned int m,n,i,j,l,x,y;
    fscanf(fin,"%u %u",&n,&m);
    unsigned **a,*v;
    a=(unsigned**)malloc(sizeof(unsigned*)*n);
    for(i=0;i<=n;i++)
        a[i]=(unsigned*)malloc(sizeof(unsigned)*n);
    v=(unsigned*)malloc(sizeof(unsigned)*n);
    
    for(i=1;i<=n;i++)
        fscanf(fin,"%u",&v[i]);
    for(i=1;i<n;i++)
            a[i][i+1]=min(v[i],v[i+1]);
    j=n-2;
    
    while(j<=n)
    {
        l=j;
        for(i=1;i<=n-j+1;i++)
        {
            a[i][l]=min(a[i][l-1],a[i+1][l]);
            l++;
        }
        j++;
    }
    for(i=1;i<=m;i++)
    {
        fscanf(fin,"%u %u",&x,&y);
        fprintf(fout,"%u\n",a[x][y]);
    }
    /*for(i=0;i<=n;i++)
    {
        free(a[i]);
        free(v[i]);
    }
    free(a);*/
    return 0;
}