Cod sursa(job #2029678)

Utilizator cont_nouCont Nou cont_nou Data 30 septembrie 2017 12:40:01
Problema Tablete Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.97 kb
#include <iostream>
#include <fstream>

using namespace std;

int a[1010][1010];

int main()
{
    ifstream fin ("tablete.in");
    ofstream fout ("tablete.out");
    int b[2010], n, k, i, j, x;
    fin >> n >> k;
    for (x=1; x<=2*n; x++)
        b[x]=0;
    for (i=1; i<=n; i++)
    {
        if (n%2==1 && i==n)
        {
            for (j=1; j<=n; j++)
            {
                if (j<k)
                    for (x=1; x<=n; x++)
                        if (!b[x])
                        {
                            if (i%2)
                                a[i][j]=x+n*(i-1),b[x]=1;
                            else
                                a[i][j]=x+n*(i-2),b[x]=1;
                            break;
                        }
                if (j==k)
                    for (x=1; x<=n; x++)
                        if (!b[x] && x%2==0)
                        {
                            if (i%2)
                                a[i][j]=x+n*(i-1),b[x]=1;
                            else
                                a[i][j]=x+n*(i-2),b[x]=1;
                            break;
                        }
            }
            for (j=n; j>k; j--)
                for (x=n; x>=1; x--)
                    if (!b[x])
                    {
                        if (i%2)
                            a[i][j]=x+n*(i-1),b[x]=1;
                        else
                            a[i][j]=x+n*(i-2),b[x]=1;
                        break;
                    }
        }
        else
        {
            for (j=1; j<=n; j++)
            {
                if (j<k)

                    for (x=1; x<=2*n; x++)
                        if (!b[x])
                        {
                            if (i%2)
                                a[i][j]=x+n*(i-1),b[x]=1;
                            else
                                a[i][j]=x+n*(i-2),b[x]=1;
                            break;
                        }
                if (j==k)

                    for (x=1; x<=2*n; x++)
                        if (!b[x] && x%2==0)
                        {
                            if (i%2)
                                a[i][j]=x+n*(i-1),b[x]=1;
                            else
                                a[i][j]=x+n*(i-2),b[x]=1;
                            break;
                        }
            }
            for (j=n; j>k; j--)
                for (x=2*n; x>=1; x--)
                    if (!b[x])

                    {
                        if (i%2)
                            a[i][j]=x+n*(i-1),b[x]=1;
                        else
                            a[i][j]=x+n*(i-2),b[x]=1;

                        break;
                    }
        }
        if (i%2==0)
            for (x=1; x<=2*n; x++)
                b[x]=0;
    }
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=n; j++)
            fout << a[i][j] << " ";
        fout << "\n";
    }
    return 0;
}