Pagini recente » Cod sursa (job #2210219) | Cod sursa (job #2340184) | Cod sursa (job #132586) | Cod sursa (job #266430) | Cod sursa (job #999020)
Cod sursa(job #999020)
#include<stdio.h>
int v[502],d[502][502][10],Log[502];
void calc_log(int n)
{
int e=0,l=1,i;
for(i=1;i<=n;++i)
{
if(i>=l*2)
{
l*=2;
++e;
}
Log[i]=e;
}
}
inline int min(int a,int b)
{
return a<=b?a:b;
}
int main()
{
freopen("plantatie.in","r",stdin);
freopen("plantatie.out","w",stdout);
int n,m,i,j,sol,l,k,lat;
scanf("%d%d",&n,&m);
calc_log(n);
///////////////
for(l=1;l<=n;++l)
{
for(i=1;i<=n;++i)
scanf("%d",&v[i]);
v[0]=2000000000;
for(i=1;i<=n;++i)
d[l][i][0]=i;
for(j=1;1<<j<=n;++j)
{
for(i=1;i+(1<<j)-1<=n;++i)
{
if(v[d[l][i][j-1]]<=v[d[l][i+(1<<(j-1))][j-1]])
d[l][i][j]=d[l][i][j-1];
else
d[l][i][j]=d[l][i+(1<<(j-1))][j-1];
}
}
}
///////////////
while(m--)
{
scanf("%d%d%d",&i,&j,&lat);
k=Log[lat];
sol=2000000000;
for(l=i;l<i+lat;++l)
{
if(v[d[l][j][k]]<=v[d[l][j+lat-1-(1<<k)+1][k]])
sol=min(sol,v[d[l][j][k]]);
else
sol=min(sol,v[d[l][j+lat-1-(1<<k)+1][k]]);
}
printf("%d\n",sol);
}
return 0;
}