Running on ideone but giving RE on codechef

//Problem code: TIC05
#include<stdio.h>
#include<malloc.h>

void program(int x)
{
int a[20][20]={0};
int c=1,i;
/a=(int*)malloc(20sizeof(int));
for(i=0;i<20;i++)
a[i]=(int*)malloc(20sizeof(int));/
int n,m,k,l;
n=m=x;
k=l=0;

while(k<m && l<n)
{
    for(i=l;i<n;++i)
    {
    a[k][i]=c;
    c++;
    }
    k++;

    for(i=k;i<m;++i)
    {
        a[i][n-1]=c;
        c++;
    }
    n--;

    if(k<m)
    {
        for(i=n-1;i>=l;--i)
        {
            a[m-1][i]=c;
            c++;
        }
        m--;
    }
    if(l<n)
    {
        for(i=m-1;i>=k;--i)
        {
            a[i][l]=c;
            c++;
        }
        l++;
    }
}
for(i=0;i<x;i++)
{
    for(c=0;c<x;c++)
    {
        printf("%d\t",a[i][c]);
    }
    printf("\n");
}

}

int main()
{
int n;
scanf("%d",&n);
program(n);
return 0;
}