Pagini recente » Cod sursa (job #532996) | Cod sursa (job #1704254) | Cod sursa (job #785522) | Cod sursa (job #2587977) | Cod sursa (job #649910)
Cod sursa(job #649910)
#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;
}