stablegradients/pie-gem5-pairs huggingface dataset:
// Slower C++ solution:
#include<iostream>

#include<stdio.h>

#include<cstring>

#include<algorithm>

using namespace std;

int main()

{

    int h,w;

    int n;

    int c[10090];

    cin>>h>>w>>n;

    int last=1;

    int map[103][103];

    for(int i=1;i<=n;i++)

    {

        cin>>c[i];

    }

    for(int i=0;i<h;i++)

    {

        if(i%2==0)

        {



            for(int j=0;j<w-1;j++)

            {

                if(c[last]--){map[i][j]=last;if(c[last]==0)last++;}

            }

            if(c[last]--){map[i][w-1]=last;if(c[last]==0)last++;}

        }

        else

        {

            for(int j=w-1;j>0;j--)if(c[last]--){map[i][j]=last;if(c[last]==0)last++;}

            if(c[last]--){map[i][0]=last;if(c[last]==0)last++;}

        }

    }

    for(int i=0;i<h;i++)

    {



            for(int j=0;j<w-1;j++)cout<<map[i][j]<<" ";

            cout<<map[i][w-1]<<endl;





    }

    return 0;

}






// Faster C++ solution for the same problem (measured speedup: 5.252770163707364x):
#include<stdio.h>  

int a[105][105];

int b[10050];  

   

int main()  

{  

    int H,W;  

    while(scanf("%d%d",&H,&W)!=EOF)  

    {  

        int t,k=0;  

        scanf("%d",&t);  

        for(int i=0;i<t;i++)  

        {

		scanf("%d",&b[i]);

	}

        for(int i=0;i<H;i++)  

        {  

            if(i%2==0)  

            {

	         for(int j=0;j<W;j++)  

            	 {  

                	a[i][j]=k+1;  

          	      	b[k]--;  

            	        if(b[k]==0) k++;  

            	 }

	     }

            else if(i%2==1)  

            {

	         for(int j=W-1;j>=0;j--)  

     	       	 {  

        	        a[i][j]=k+1;  

            	        b[k]--;  

                	if(b[k]==0) k++;  

                 }  

            }

        }  

        for(int i=0;i<H;i++)  

        {  

            for(int j=0;j<W-1;j++)  

            {

		    printf("%d ",a[i][j]);

            }

            printf("%d\n",a[i][W-1]);  

        }  

    }  

}
// Slower C++ solution:
#include<bits/stdc++.h>

using namespace std;

int main()

{

    int h,w;

    int n;

    int a[10010],b[10010];

    int c[110][110];

    while(scanf("%d%d",&h,&w)!=EOF)

    {

        scanf("%d",&n);

        for(int i=0;i<n;i++)

        {

            scanf("%d",&a[i]);

        }

        int bb=0,bbb=0;

        for(int i=1;i<=n;i++)

        {

            for(int j=0;j<a[bbb];j++)

            {

                b[bb++]=i;

            }

            bbb++;

        }

        int ss=0;

        for(int i=0;i<h;i++)

        {

            if(i%2==0)

            {

                for(int j=0;j<w;j++)

                {

                    c[i][j]=b[ss++];

                }

            }

            else

            {

                for(int j=w-1;j>=0;j--)

                {

                    c[i][j]=b[ss++];

                }

            }

        }

        for(int i=0;i<h;i++)

        {

            printf("%d",c[i][0]);

            for(int j=1;j<w;j++)

            {

                printf(" %d",c[i][j]);

            }

            printf("\n");

        }

    }

}


// Faster C++ solution for the same problem (measured speedup: 5.194407586523968x):
#include<stdio.h>  

int a[105][105];

int b[10050];  

   

int main()  

{  

    int H,W;  

    while(scanf("%d%d",&H,&W)!=EOF)  

    {  

        int t,k=0;  

        scanf("%d",&t);  

        for(int i=0;i<t;i++)  

        {

		scanf("%d",&b[i]);

	}

        for(int i=0;i<H;i++)  

        {  

            if(i%2==0)  

            {

	         for(int j=0;j<W;j++)  

            	 {  

                	a[i][j]=k+1;  

          	      	b[k]--;  

            	        if(b[k]==0) k++;  

            	 }

	     }

            else if(i%2==1)  

            {

	         for(int j=W-1;j>=0;j--)  

     	       	 {  

        	        a[i][j]=k+1;  

            	        b[k]--;  

                	if(b[k]==0) k++;  

                 }  

            }

        }  

        for(int i=0;i<H;i++)  

        {  

            for(int j=0;j<W-1;j++)  

            {

		    printf("%d ",a[i][j]);

            }

            printf("%d\n",a[i][W-1]);  

        }  

    }  

}
// Slower C++ solution:
#include <bits/stdc++.h>

   

 using namespace std;

   

 #define MP make_pair

 #define PB push_back

 typedef long long LL;

 typedef pair<int,int> PII;

 const double eps=1e-8;

 const double pi=acos(-1.0);

 const int K=1e6+7;

 const int mod=1e9+7;

  

 int r,c,n,x,y,ans[200][200];

  

 int main(void)

 {

     scanf("%d%d%d",&r,&c,&n);

     x=1,y=1;

     for(int i=1,cnt;i<=n;i++)

     {

         scanf("%d",&cnt);

         while(cnt--)

         {

             ans[x][y]=i;

             if(y==c&&x%2==1)

                 y=c,x++;

             else if(y==1&&x%2==0)

                 y=1,x++;

             else if(x&1)

                 y++;

             else

                 y--;

         }

     }

     for(int i=1;i<=r;i++)

     for(int j=1;j<=c;j++)

         printf("%d%c",ans[i][j],j==c?'\n':' ');

     return 0;

 }

// Faster C++ solution for the same problem (measured speedup: 5.188330394399148x):
#include<stdio.h>  

int a[105][105];

int b[10050];  

   

int main()  

{  

    int H,W;  

    while(scanf("%d%d",&H,&W)!=EOF)  

    {  

        int t,k=0;  

        scanf("%d",&t);  

        for(int i=0;i<t;i++)  

        {

		scanf("%d",&b[i]);

	}

        for(int i=0;i<H;i++)  

        {  

            if(i%2==0)  

            {

	         for(int j=0;j<W;j++)  

            	 {  

                	a[i][j]=k+1;  

          	      	b[k]--;  

            	        if(b[k]==0) k++;  

            	 }

	     }

            else if(i%2==1)  

            {

	         for(int j=W-1;j>=0;j--)  

     	       	 {  

        	        a[i][j]=k+1;  

            	        b[k]--;  

                	if(b[k]==0) k++;  

                 }  

            }

        }  

        for(int i=0;i<H;i++)  

        {  

            for(int j=0;j<W-1;j++)  

            {

		    printf("%d ",a[i][j]);

            }

            printf("%d\n",a[i][W-1]);  

        }  

    }  

}
// Slower C++ solution:
#include<iostream>

#include<cstdio>

#include<cstring>

#include<cmath>

#include<algorithm>

#include<set>

using namespace std;

typedef long long LL;

const int INF=0x3f3f3f3f;

const int MAXN=1e5+5;

int a[MAXN];

int G[105][105];



int main()

{

    int h,w;

    while(scanf("%d%d",&h,&w)!=EOF)

    {

        int n;

       cin>>n;

        for(int i=1;i<=n;++i)

             cin>>a[i];//scanf("%d",&a[i]);

        int cnt=1;

        for(int i=1;i<=h;++i)

        {

            if(i&1)

            {

                for(int j=1;j<=w;++j)

                {

                   if(a[cnt]>0) {G[i][j]=cnt;--a[cnt];}

                   else if(a[cnt]==0) {++cnt;G[i][j]=cnt;--a[cnt];}

                }

            }else

            {

                for(int j=w;j>=1;--j)

                {

                    if(a[cnt]>0) {G[i][j]=cnt;--a[cnt];}

                    else if(a[cnt]==0) {++cnt;G[i][j]=cnt;--a[cnt];}

                }

            }

        }

        for(int i=1;i<=h;++i)

        {

            for(int j=1;j<=w;++j)

            {

                if(j!=w) printf("%d ",G[i][j]);

                else printf("%d\n",G[i][j]);

            }

        }

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.1771144322037355x):
#include<stdio.h>  

int a[105][105];

int b[10050];  

   

int main()  

{  

    int H,W;  

    while(scanf("%d%d",&H,&W)!=EOF)  

    {  

        int t,k=0;  

        scanf("%d",&t);  

        for(int i=0;i<t;i++)  

        {

		scanf("%d",&b[i]);

	}

        for(int i=0;i<H;i++)  

        {  

            if(i%2==0)  

            {

	         for(int j=0;j<W;j++)  

            	 {  

                	a[i][j]=k+1;  

          	      	b[k]--;  

            	        if(b[k]==0) k++;  

            	 }

	     }

            else if(i%2==1)  

            {

	         for(int j=W-1;j>=0;j--)  

     	       	 {  

        	        a[i][j]=k+1;  

            	        b[k]--;  

                	if(b[k]==0) k++;  

                 }  

            }

        }  

        for(int i=0;i<H;i++)  

        {  

            for(int j=0;j<W-1;j++)  

            {

		    printf("%d ",a[i][j]);

            }

            printf("%d\n",a[i][W-1]);  

        }  

    }  

}
// Slower C++ solution:
#include<iostream>

#include<cstdio>

#include<cstring>

#include<cmath>

#include<algorithm>

#include<set>

using namespace std;

typedef long long LL;

const int INF=0x3f3f3f3f;

const int MAXN=1e5+5;

int a[MAXN];

int G[105][105];



int main()

{

    int h,w;

    while(scanf("%d%d",&h,&w)!=EOF)

    {

        int n;

        cin>>n;

        for(int i=1;i<=n;++i)

            scanf("%d",&a[i]);

        int cnt=1;

        for(int i=1;i<=h;++i)

        {

            if(i&1)

            {

                for(int j=1;j<=w;++j)

                {

                   if(a[cnt]>0) {G[i][j]=cnt;--a[cnt];}

                   else if(a[cnt]==0) {++cnt;G[i][j]=cnt;--a[cnt];}

                }

            }else

            {

                for(int j=w;j>=1;--j)

                {

                    if(a[cnt]>0) {G[i][j]=cnt;--a[cnt];}

                    else if(a[cnt]==0) {++cnt;G[i][j]=cnt;--a[cnt];}

                }

            }

        }

        for(int i=1;i<=h;++i)

        {

            for(int j=1;j<=w;++j)

            {

                if(j!=w) printf("%d ",G[i][j]);

                else printf("%d\n",G[i][j]);

            }

        }

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.176741973217871x):
#include<stdio.h>  

int a[105][105];

int b[10050];  

   

int main()  

{  

    int H,W;  

    while(scanf("%d%d",&H,&W)!=EOF)  

    {  

        int t,k=0;  

        scanf("%d",&t);  

        for(int i=0;i<t;i++)  

        {

		scanf("%d",&b[i]);

	}

        for(int i=0;i<H;i++)  

        {  

            if(i%2==0)  

            {

	         for(int j=0;j<W;j++)  

            	 {  

                	a[i][j]=k+1;  

          	      	b[k]--;  

            	        if(b[k]==0) k++;  

            	 }

	     }

            else if(i%2==1)  

            {

	         for(int j=W-1;j>=0;j--)  

     	       	 {  

        	        a[i][j]=k+1;  

            	        b[k]--;  

                	if(b[k]==0) k++;  

                 }  

            }

        }  

        for(int i=0;i<H;i++)  

        {  

            for(int j=0;j<W-1;j++)  

            {

		    printf("%d ",a[i][j]);

            }

            printf("%d\n",a[i][W-1]);  

        }  

    }  

}
// Slower C++ solution:
#include<iostream>

using namespace std;

int a[10005];

int b[10005];

int main()

{

int h, w;

cin >> h >> w;

int n;

cin >> n;

for (int i = 1; i <= n; i++)

cin >> b[i];

int temp = 1;

int j = 1;

for (int i = 1; i <= n; i++)

{

while (b[i] > 0)

{

a[j] = temp;

j++;

b[i]--;

}

temp++;

}

for (int i = 1; i <= h; i++)

{

if (i % 2 == 1)

{

for (int p = w*(i - 1) + 1; p <= i*w; p++)

{

cout << a[p] << " ";

}

if (i != h)

cout << endl;

}

else if (i % 2 == 0)

{

for (int p = w*i; p >= w*(i - 1) + 1; p--)

{

cout << a[p] << " ";

}

if (i != h)

cout << endl;

}

}

return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.211702195762115x):
#include<stdio.h>  

int a[105][105];

int b[10050];  

   

int main()  

{  

    int H,W;  

    while(scanf("%d%d",&H,&W)!=EOF)  

    {  

        int t,k=0;  

        scanf("%d",&t);  

        for(int i=0;i<t;i++)  

        {

		scanf("%d",&b[i]);

	}

        for(int i=0;i<H;i++)  

        {  

            if(i%2==0)  

            {

	         for(int j=0;j<W;j++)  

            	 {  

                	a[i][j]=k+1;  

          	      	b[k]--;  

            	        if(b[k]==0) k++;  

            	 }

	     }

            else if(i%2==1)  

            {

	         for(int j=W-1;j>=0;j--)  

     	       	 {  

        	        a[i][j]=k+1;  

            	        b[k]--;  

                	if(b[k]==0) k++;  

                 }  

            }

        }  

        for(int i=0;i<H;i++)  

        {  

            for(int j=0;j<W-1;j++)  

            {

		    printf("%d ",a[i][j]);

            }

            printf("%d\n",a[i][W-1]);  

        }  

    }  

}
// Slower C++ solution:
#include<iostream>

#include<cstdio>

#include<cstring>

#include<cmath>

#include<algorithm>

#include<set>

using namespace std;

typedef long long LL;

const int INF=0x3f3f3f3f;

const int MAXN=1e5+5;

int a[MAXN];

int G[105][105];



int main()

{

    int b,w;

    while(scanf("%d%d",&b,&w)!=EOF)

    {

        int n;

        scanf("%d",&n);

        for(int i=1;i<=n;++i)

            scanf("%d",&a[i]);

        int cnt=1;

        for(int i=1;i<=b;++i)

        {

            if(i&1)

            {

                for(int j=1;j<=w;++j)

                {

                   if(a[cnt]>0) {G[i][j]=cnt;--a[cnt];}

                   else if(a[cnt]==0) {++cnt;G[i][j]=cnt;--a[cnt];}

                }

            }else

            {

                for(int j=w;j>=1;--j)

                {

                    if(a[cnt]>0) {G[i][j]=cnt;--a[cnt];}

                    else if(a[cnt]==0) {++cnt;G[i][j]=cnt;--a[cnt];}

                }

            }

        }

        for(int i=1;i<=b;++i)

        {

            for(int j=1;j<=w;++j)

            {

                if(j!=w) printf("%d ",G[i][j]);

                else printf("%d\n",G[i][j]);

            }

        }

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.148231401784312x):
#include<stdio.h>  

int a[105][105];

int b[10050];  

   

int main()  

{  

    int H,W;  

    while(scanf("%d%d",&H,&W)!=EOF)  

    {  

        int t,k=0;  

        scanf("%d",&t);  

        for(int i=0;i<t;i++)  

        {

		scanf("%d",&b[i]);

	}

        for(int i=0;i<H;i++)  

        {  

            if(i%2==0)  

            {

	         for(int j=0;j<W;j++)  

            	 {  

                	a[i][j]=k+1;  

          	      	b[k]--;  

            	        if(b[k]==0) k++;  

            	 }

	     }

            else if(i%2==1)  

            {

	         for(int j=W-1;j>=0;j--)  

     	       	 {  

        	        a[i][j]=k+1;  

            	        b[k]--;  

                	if(b[k]==0) k++;  

                 }  

            }

        }  

        for(int i=0;i<H;i++)  

        {  

            for(int j=0;j<W-1;j++)  

            {

		    printf("%d ",a[i][j]);

            }

            printf("%d\n",a[i][W-1]);  

        }  

    }  

}
// Slower C++ solution:
#include <iostream>

#include <string>

#include <ctime>

#include <cstring>

#include <cstdlib>

#include <cmath>

#include<cstdio>

#define PI 3.1415927

#include <vector>

using namespace std;



int main()

{

    int r,c,n;

    int a[200][200];

    cin>>r>>c>>n;

    int x=1,y=1;

    for(int i=1; i<=n; i++)

    {

        int m;

        cin>>m;

        while(m--)

        {

            a[x][y]=i;

            if(y==c&&x%2==1)

            {

                y=c,x++;

            }

            else if(y==1&&x%2==0)

            {

                y=1,x++;

            }

            else if(x&1)

            {

                y++;

            }

            else

            {

                y--;

            }

        }

    }

    for(int i=1; i<r+1; i++)

    {

        for(int j=1; j<c+1; j++)

        {

            printf("%d%c",a[i][j],j==c?'\n':' ');

        }

    }

    return 0;

}




// Faster C++ solution for the same problem (measured speedup: 5.193377504641188x):
#include<stdio.h>  

int a[105][105];

int b[10050];  

   

int main()  

{  

    int H,W;  

    while(scanf("%d%d",&H,&W)!=EOF)  

    {  

        int t,k=0;  

        scanf("%d",&t);  

        for(int i=0;i<t;i++)  

        {

		scanf("%d",&b[i]);

	}

        for(int i=0;i<H;i++)  

        {  

            if(i%2==0)  

            {

	         for(int j=0;j<W;j++)  

            	 {  

                	a[i][j]=k+1;  

          	      	b[k]--;  

            	        if(b[k]==0) k++;  

            	 }

	     }

            else if(i%2==1)  

            {

	         for(int j=W-1;j>=0;j--)  

     	       	 {  

        	        a[i][j]=k+1;  

            	        b[k]--;  

                	if(b[k]==0) k++;  

                 }  

            }

        }  

        for(int i=0;i<H;i++)  

        {  

            for(int j=0;j<W-1;j++)  

            {

		    printf("%d ",a[i][j]);

            }

            printf("%d\n",a[i][W-1]);  

        }  

    }  

}
// Slower C++ solution:
#include<iostream>

#include<cstdio>

#include<cstring>

#include<cmath>

#include<algorithm>

#include<set>

using namespace std;

typedef long long LL;

const int IN=0x3f3f3f3f;

const int MAX=1e5+5;

int a[MAX];

int G[110][110];



int main()

{

    int h,w;

    while(scanf("%d%d",&h,&w)!=EOF)

    {

        int n;

        scanf("%d",&n);

        for(int i=1;i<=n;++i)

            scanf("%d",&a[i]);

        int cn=1;

        for(int i=1;i<=h;++i)

        {

            if(i&1)

            {

                for(int j=1;j<=w;++j)

                {

                   if(a[cn]>0) {G[i][j]=cn;--a[cn];}

                   else if(a[cn]==0) {++cn;G[i][j]=cn;--a[cn];}

                }

            }else

            {

                for(int j=w;j>=1;--j)

                {

                    if(a[cn]>0) {G[i][j]=cn;--a[cn];}

                    else if(a[cn]==0) {++cn;G[i][j]=cn;--a[cn];}

                }

            }

        }

        for(int i=1;i<=h;++i)

        {

            for(int j=1;j<=w;++j)

            {

                if(j!=w) printf("%d ",G[i][j]);

                else printf("%d\n",G[i][j]);

            }

        }

    }

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.147086381386362x):
#include<stdio.h>  

int a[105][105];

int b[10050];  

   

int main()  

{  

    int H,W;  

    while(scanf("%d%d",&H,&W)!=EOF)  

    {  

        int t,k=0;  

        scanf("%d",&t);  

        for(int i=0;i<t;i++)  

        {

		scanf("%d",&b[i]);

	}

        for(int i=0;i<H;i++)  

        {  

            if(i%2==0)  

            {

	         for(int j=0;j<W;j++)  

            	 {  

                	a[i][j]=k+1;  

          	      	b[k]--;  

            	        if(b[k]==0) k++;  

            	 }

	     }

            else if(i%2==1)  

            {

	         for(int j=W-1;j>=0;j--)  

     	       	 {  

        	        a[i][j]=k+1;  

            	        b[k]--;  

                	if(b[k]==0) k++;  

                 }  

            }

        }  

        for(int i=0;i<H;i++)  

        {  

            for(int j=0;j<W-1;j++)  

            {

		    printf("%d ",a[i][j]);

            }

            printf("%d\n",a[i][W-1]);  

        }  

    }  

}
// Slower C++ solution:
#include<iostream>



using namespace std;



int main()

{

    int h,w,n;

    int i;

    cin>>h;

    cin>>w;

    int b[h][w];

    cin>>n;

    int a[n];

    int c[h*w];

    for(i=0;i<n;++i)

    {

        cin>>a[i];

    }

    int j=0;

    for(i=0;i<n;++i)

    {

        while(a[i]!=0)

        {

            c[j]=i+1;

            ++j;

            --a[i];

        }

    }

    for(i=0;i<h;i=i+2)

    {

        for(j=0;j<w;++j)

        {

            b[i][j]=c[i*w+j];

        }

    }

    for(i=1;i<h;i=i+2)

    {

        for(j=0;j<w;++j)

        {

            b[i][w-1-j]=c[i*w+j];

        }

    }

    for(i=0;i<h;++i)

    {

        for(j=0;j<w;++j)

        {

            cout<<b[i][j]<<" ";

        }

        cout<<endl;

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.2115392449558x):
#include<stdio.h>  

int a[105][105];

int b[10050];  

   

int main()  

{  

    int H,W;  

    while(scanf("%d%d",&H,&W)!=EOF)  

    {  

        int t,k=0;  

        scanf("%d",&t);  

        for(int i=0;i<t;i++)  

        {

		scanf("%d",&b[i]);

	}

        for(int i=0;i<H;i++)  

        {  

            if(i%2==0)  

            {

	         for(int j=0;j<W;j++)  

            	 {  

                	a[i][j]=k+1;  

          	      	b[k]--;  

            	        if(b[k]==0) k++;  

            	 }

	     }

            else if(i%2==1)  

            {

	         for(int j=W-1;j>=0;j--)  

     	       	 {  

        	        a[i][j]=k+1;  

            	        b[k]--;  

                	if(b[k]==0) k++;  

                 }  

            }

        }  

        for(int i=0;i<H;i++)  

        {  

            for(int j=0;j<W-1;j++)  

            {

		    printf("%d ",a[i][j]);

            }

            printf("%d\n",a[i][W-1]);  

        }  

    }  

}
// Slower C++ solution:
#include<iostream>

#include<cstdio>

#include<cstring>

#include<cmath>

#include<algorithm>

#include<set>

using namespace std;

typedef long long LL;

const int INF=0x3f3f3f3f;

const int MAXN=2e5+5;

int a[MAXN];

int G[105][105];



int main()

{

    int h,w;

    while(scanf("%d%d",&h,&w)!=EOF)

    {

        int n;

        scanf("%d",&n);

        for(int i=1;i<=n;++i)

            scanf("%d",&a[i]);

        int cnt=1;

        for(int i=1;i<=h;++i)

        {

            if(i&1)

            {

                for(int j=1;j<=w;++j)

                {

                   if(a[cnt]>0) {G[i][j]=cnt;--a[cnt];}

                   else if(a[cnt]==0) {++cnt;G[i][j]=cnt;--a[cnt];}

                }

            }else

            {

                for(int j=w;j>=1;--j)

                {

                    if(a[cnt]>0) {G[i][j]=cnt;--a[cnt];}

                    else if(a[cnt]==0) {++cnt;G[i][j]=cnt;--a[cnt];}

                }

            }

        }

        for(int i=1;i<=h;++i)

        {

            for(int j=1;j<=w;++j)

            {

                if(j!=w) printf("%d ",G[i][j]);

                else printf("%d\n",G[i][j]);

            }

        }

    }

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.151471503977746x):
#include<stdio.h>  

int a[105][105];

int b[10050];  

   

int main()  

{  

    int H,W;  

    while(scanf("%d%d",&H,&W)!=EOF)  

    {  

        int t,k=0;  

        scanf("%d",&t);  

        for(int i=0;i<t;i++)  

        {

		scanf("%d",&b[i]);

	}

        for(int i=0;i<H;i++)  

        {  

            if(i%2==0)  

            {

	         for(int j=0;j<W;j++)  

            	 {  

                	a[i][j]=k+1;  

          	      	b[k]--;  

            	        if(b[k]==0) k++;  

            	 }

	     }

            else if(i%2==1)  

            {

	         for(int j=W-1;j>=0;j--)  

     	       	 {  

        	        a[i][j]=k+1;  

            	        b[k]--;  

                	if(b[k]==0) k++;  

                 }  

            }

        }  

        for(int i=0;i<H;i++)  

        {  

            for(int j=0;j<W-1;j++)  

            {

		    printf("%d ",a[i][j]);

            }

            printf("%d\n",a[i][W-1]);  

        }  

    }  

}