Cod sursa(job #997402)

Utilizator narcis_vsGemene Narcis - Gabriel narcis_vs Data 13 septembrie 2013 23:56:09
Problema Tablete Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <fstream>
#define ValMax 1000004
#define Nmax 1002
using namespace std;

bool use[ValMax];
int a[Nmax][Nmax];
int main()
{

    int i,j,value, x, n, k;
    ifstream f("tablete.in");
    f>>n>>k;
    f.close();
    if(k&1)
    {
        value = k+1;
        x = k+1;
        j = n/2;
        for(i = 1;i <= j; ++i)
        {
            a[i][k] = value,
            use[value] = 1;
            value+= k+1;
        }
        value = n*n-(n-k);
        if(value&1)
            --value;
        for(i = n;i> j; --i)
            a[i][k] = value,
            use[value] = 1,
            value -= k+1;
        for(i = value = 1;i <= n; ++i)
            for(j = 1;j < k; ++j)
                if(!a[i][j])
                {
                    while(use[value])
                        ++value;
                    a[i][j] = value++;
                }
         for(i = 1;i <= n; ++i)
            for(j = k+1;j <= n; ++j)
                if(!a[i][j])
                {
                    while(use[value])
                        ++value;
                    a[i][j] = value++;
                }
    }
    else
    {
        for(i = value = 1;i <= n; ++i)
            for(j = 1;j <= k; ++j)
                a[i][j] = value++;
         for(i = 1;i <= n; ++i)
            for(j = k+1;j <= n; ++j)
                a[i][j] = value++;
    }
    ofstream g("tablete.out");
    for(i=1;i<=n;++i)
    {
        for(j=1;j<=n;++j)
            g<<a[i][j]<<" ";
        g<<"\n";
    }
    g.close();
    return 0;
}