stablegradients/pie-gem5-pairs huggingface dataset:
// Slower C++ solution:
#include<bits/stdc++.h>



using namespace std;

int g[1005][1005];

int main()

{

    int n,m;cin>>n>>m;

    int q;cin>>q;

    int i=0,j=0;

    int dir=0;

    for(int k=1;k<=q;k++)

    {

        int x;

        scanf("%d",&x);

        while(x--)

        {

            g[i][j]=k;

            if(!dir)

            {

                j++;

                if(j>=m)

                {

                    dir=!dir;

                    i++;

                    j=m-1;

                }

            }

            else

            {

                j--;

                if(j<0)

                {

                    dir=!dir;

                    i++;

                    j=0;

                }

            }

        }

    }



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

    {

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

        {

            if(j!=0)printf(" ");

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

        }

        printf("\n");

    }



}


// Faster C++ solution for the same problem (measured speedup: 5.21566896407047x):
#include<cstdio>

int p[100 + 10][100 + 10];

int a[10000 + 10];

int h, w, n;



int main() {

	scanf("%d%d%d", &h, &w, &n);

	for (int i = 1;i <= n;i++)scanf("%d", &a[i]);

	int i = 1, j = 1, t = h*w, k = 1;

	while (t--) {

		p[i][j] = k;

		a[k]--;

		if (!a[k])k++;

		if (j & 1) {

			if (i == h)j++;

			else i++;

		}

		else {

			if (i == 1)j++;

			else i--;

		}

	}

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

		for (int j = 1;j < w;j++)printf("%d ", p[i][j]);

		printf("%d\n", p[i][w]);

	}

	for (int j = 1;j < w;j++)printf("%d ", p[h][j]);

	printf("%d", p[h][w]);

	return 0;

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

#include<cstdio>

#include<cstring>

#include<string>

#include<algorithm>

#include<cmath>

using namespace std;



int h,w,n;

int a[10010],mp[110][110];



int main()

{

    scanf("%d%d",&h,&w);

    scanf("%d",&n);

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

    {

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

    }

    int k=1;

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

    {

        int j;

        if(i%2==1) j=1;

        else j=w;

        while(j>=1&&j<=w)

        {

            while(a[k]<=0) k++;

            if(a[k]>0)

            {

                mp[i][j]=k;

                a[k]--;

                if(i%2==1) j++;

                else j--;

            }

        }

    }

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

    {

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

        {

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

        }

        printf("\n");

    }

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.15308255648452x):
#include<cstdio>

int p[100 + 10][100 + 10];

int a[10000 + 10];

int h, w, n;



int main() {

	scanf("%d%d%d", &h, &w, &n);

	for (int i = 1;i <= n;i++)scanf("%d", &a[i]);

	int i = 1, j = 1, t = h*w, k = 1;

	while (t--) {

		p[i][j] = k;

		a[k]--;

		if (!a[k])k++;

		if (j & 1) {

			if (i == h)j++;

			else i++;

		}

		else {

			if (i == 1)j++;

			else i--;

		}

	}

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

		for (int j = 1;j < w;j++)printf("%d ", p[i][j]);

		printf("%d\n", p[i][w]);

	}

	for (int j = 1;j < w;j++)printf("%d ", p[h][j]);

	printf("%d", p[h][w]);

	return 0;

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



using namespace std;

int g[1005][1005];

int main()

{

    int n,m;cin>>n>>m;

    int q;cin>>q;

    int i=0,j=0;

    int dir=0;

    for(int k=1;k<=q;k++)

    {

        int x;

        scanf("%d",&x);

        while(x--)

        {

            g[i][j]=k;

            if(!dir)

            {

                j++;

                if(j>=m)

                {

                    dir=!dir;

                    i++;

                    j=m-1;

                }

            }

            else

            {

                j--;

                if(j<0)

                {

                    dir=!dir;

                    i++;

                    j=0;

                }

            }

        }

    }



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

    {

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

        {

            if(j!=0)printf(" ");

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

        }

        printf("\n");

    }



}


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

#include<math.h> 

#include<stdlib.h>

int a[105][105],b[10000+50];  

   

int main ()  

{  

    int h,w;  

    int wanglianhua=100; 

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

    {  

        int i,j,t,k=0;  

        scanf("%d",&t);  

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

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

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

        {  

            if(i%2==0)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

            if(i%2==1)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

        }  

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

        {  

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

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

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

        }  

    }  int wang_lianhua=200; 

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

#include<cstdio>

#include<cstring>

#include<string>

#include<algorithm>

#include<cmath>

using namespace std;



int h,w,n;

int a[10010],mp[110][110];



int main()

{

    scanf("%d%d",&h,&w);

    scanf("%d",&n);

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

    {

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

    }

    int k=1;

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

    {

        int j;

        if(i%2==1) j=1;

        else j=w;

        while(j>=1&&j<=w)

        {

            while(a[k]<=0) k++;

            if(a[k]>0)

            {

                mp[i][j]=k;

                a[k]--;

                if(i%2==1) j++;

                else j--;

            }

        }

    }

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

    {

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

        {

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

        }

        printf("\n");

    }

    return 0;

}

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

#include<math.h> 

#include<stdlib.h>

int a[105][105],b[10000+50];  

   

int main ()  

{  

    int h,w;  

    int wanglianhua=100; 

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

    {  

        int i,j,t,k=0;  

        scanf("%d",&t);  

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

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

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

        {  

            if(i%2==0)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

            if(i%2==1)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

        }  

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

        {  

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

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

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

        }  

    }  int wang_lianhua=200; 

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

#include<string> 

#define maxn 1000000

 

using namespace std;

 

int paint[110][110];

int main()

{

    int h,w,n,x=0;

    cin>>h>>w>>n;

    int a[n];

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

    {

        cin>>a[i];

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

        {

            if((x/w)%2==0) paint[x/w][x%w]=i+1;

            else paint[x/w][w-(x%w)-1]=i+1;

            x++;

        }

    }

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

    {

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

        {

            if(j==w-1) printf("%d\n",paint[i][j]);

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

        }

    }

    return 0;

} 

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

#include<math.h> 

#include<stdlib.h>

int a[105][105],b[10000+50];  

   

int main ()  

{  

    int h,w;  

    int wanglianhua=100; 

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

    {  

        int i,j,t,k=0;  

        scanf("%d",&t);  

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

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

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

        {  

            if(i%2==0)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

            if(i%2==1)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

        }  

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

        {  

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

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

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

        }  

    }  int wang_lianhua=200; 

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



using namespace std;

int g[1005][1005];

int main()

{

    int n,m;cin>>n>>m;

    int q;cin>>q;

    int i=0,j=0;

    int dir=0;

    for(int k=1;k<=q;k++)

    {

        int x;

        scanf("%d",&x);

        while(x--)

        {

            g[i][j]=k;

            if(!dir)

            {

                j++;

                if(j>=m)

                {

                    dir=!dir;

                    i++;

                    j=m-1;

                }

            }

            else

            {

                j--;

                if(j<0)

                {

                    dir=!dir;

                    i++;

                    j=0;

                }

            }

        }

    }



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

    {

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

        {

            if(j!=0)printf(" ");

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

        }

        printf("\n");

    }



}


// Faster C++ solution for the same problem (measured speedup: 5.20498490919347x):


#define mst(a,b) memset((a),(b),sizeof(a))  

#define rush() int T;scanf("%d",&T);while(T--)  

#define f(i,a,b) for(register int i=a;i<=b;i++)

#include<stdio.h>  

   

int a[105][105],b[10050];  

   

int main ()  

{  

    int h,w;  

    

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

    {  

        int i,j,t,k=0;  

        scanf("%d",&t);  

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

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

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

        {  

            if(i%2==0)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

            if(i%2==1)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

        }  

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

        {  

            for(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<string>

#include<algorithm>

#include<cmath>

using namespace std;



int h,w,n;

int a[10010],mp[110][110];



int main()

{

    scanf("%d%d",&h,&w);

    scanf("%d",&n);

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

    {

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

    }

    int k=1;

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

    {

        int j;

        if(i%2==1) j=1;

        else j=w;

        while(j>=1&&j<=w)

        {

            while(a[k]<=0) k++;

            if(a[k]>0)

            {

                mp[i][j]=k;

                a[k]--;

                if(i%2==1) j++;

                else j--;

            }

        }

    }

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

    {

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

        {

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

        }

        printf("\n");

    }

    return 0;

}

// Faster C++ solution for the same problem (measured speedup: 5.142526706947586x):


#define mst(a,b) memset((a),(b),sizeof(a))  

#define rush() int T;scanf("%d",&T);while(T--)  

#define f(i,a,b) for(register int i=a;i<=b;i++)

#include<stdio.h>  

   

int a[105][105],b[10050];  

   

int main ()  

{  

    int h,w;  

    

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

    {  

        int i,j,t,k=0;  

        scanf("%d",&t);  

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

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

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

        {  

            if(i%2==0)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

            if(i%2==1)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

        }  

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

        {  

            for(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> 

#define maxn 1000000

 

using namespace std;

 

int paint[110][110];

int main()

{

    int h,w,n,x=0;

    cin>>h>>w>>n;

    int a[n];

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

    {

        cin>>a[i];

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

        {

            if((x/w)%2==0) paint[x/w][x%w]=i+1;

            else paint[x/w][w-(x%w)-1]=i+1;

            x++;

        }

    }

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

    {

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

        {

            if(j==w-1) printf("%d\n",paint[i][j]);

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

        }

    }

    return 0;

} 

// Faster C++ solution for the same problem (measured speedup: 5.186897748882001x):


#define mst(a,b) memset((a),(b),sizeof(a))  

#define rush() int T;scanf("%d",&T);while(T--)  

#define f(i,a,b) for(register int i=a;i<=b;i++)

#include<stdio.h>  

   

int a[105][105],b[10050];  

   

int main ()  

{  

    int h,w;  

    

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

    {  

        int i,j,t,k=0;  

        scanf("%d",&t);  

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

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

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

        {  

            if(i%2==0)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

            if(i%2==1)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

        }  

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

        {  

            for(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<cmath>

using namespace std;

int main()

{

    int a[10000];

    int G[105][105];

    long i,j,n,h,w;

    cin >> h >> w;

    cin >> n;

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

    cin>>a[i];

    long ans=1;

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

    {

        if(i&1)

        {

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

            {

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

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

            }

        }

        else

        {

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

            {

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

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

            }

        }

    }

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

    {

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

        {

            if(j!=w) cout<<G[i][j]<<" ";

            else cout<<G[i][j]<<endl;

        }

    }

return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.247521211451567x):


#define mst(a,b) memset((a),(b),sizeof(a))  

#define rush() int T;scanf("%d",&T);while(T--)  

#define f(i,a,b) for(register int i=a;i<=b;i++)

#include<stdio.h>  

   

int a[105][105],b[10050];  

   

int main ()  

{  

    int h,w;  

    

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

    {  

        int i,j,t,k=0;  

        scanf("%d",&t);  

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

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

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

        {  

            if(i%2==0)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

            if(i%2==1)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

        }  

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

        {  

            for(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;

int a[10000000];

int G[105][105];



int main()

{

    int h,w;

    while(cin>>h>>w)

    {

        int n;

        cin>>n;

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

            cin>>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) cout<<G[i][j]<<" ";

                else cout<<G[i][j]<<endl;

            }

        }

    }

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 5.21189207892579x):


#define mst(a,b) memset((a),(b),sizeof(a))  

#define rush() int T;scanf("%d",&T);while(T--)  

#define f(i,a,b) for(register int i=a;i<=b;i++)

#include<stdio.h>  

   

int a[105][105],b[10050];  

   

int main ()  

{  

    int h,w;  

    

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

    {  

        int i,j,t,k=0;  

        scanf("%d",&t);  

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

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

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

        {  

            if(i%2==0)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

            if(i%2==1)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

        }  

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

        {  

            for(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;



const int MAXN=10005;

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.147522083752523x):


#define mst(a,b) memset((a),(b),sizeof(a))  

#define rush() int T;scanf("%d",&T);while(T--)  

#define f(i,a,b) for(register int i=a;i<=b;i++)

#include<stdio.h>  

   

int a[105][105],b[10050];  

   

int main ()  

{  

    int h,w;  

    

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

    {  

        int i,j,t,k=0;  

        scanf("%d",&t);  

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

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

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

        {  

            if(i%2==0)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

            if(i%2==1)  

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

                {  

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

                    b[k]--;  

                    if(b[k]==0)  

                        k++;  

                }  

        }  

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

        {  

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

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

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

        }  

    }  

}