Cod sursa(job #231146)

Utilizator haidesportulRazvan Ionescu haidesportul Data 14 decembrie 2008 11:36:57
Problema Tablete Scor 20
Compilator cpp Status done
Runda Algoritmiada 2009, Runda 1, Clasele 5-8 Marime 1.45 kb
# include <iostream>
# include <fstream>
using namespace std;

struct matrice
{
    int n;
    int** matr;
    
    matrice();
    matrice(int n);
    void print(ofstream out);
};

matrice::matrice()
{
    n=0;
    matr=NULL;
}

matrice::matrice(int n)
{
    if(n<0) return;
    matr=new int* [n];
    for(int i=0; i<n; i++)
        matr[i]=new int[n];
    this->n=n;
}

void citeste(const char* filename, int &n, int &k)
{
    ifstream in(filename);
    in>>n>>k;
    in.close();
}

matrice ciocolataaa(int n, int k)
{
    matrice m(n);
    bool *bagat=new bool[n*n];
    for(int i=0; i<n*n; i++) bagat[i]=false;
    for(int i=0; i<n; i++)
    {
        int i_bagat=0;
        while(bagat[i_bagat]) i_bagat++;
        for(int j=0; j<n; j++)
        {
            if(j==k-1)
            {
                while (((i_bagat+1)%2!=0)||(bagat[i_bagat])) i_bagat++;
                m.matr[i][j]=i_bagat+1;
                bagat[i_bagat]=true;
            }
            else
            {
                while(bagat[i_bagat]) i_bagat++;
                m.matr[i][j]=i_bagat+1;
                bagat[i_bagat]=true;
            }
        }
    }
    return m;
}

int main()
{
    int n,k;
    citeste("tablete.in", n, k);
    if(n<2||k<2) return 0;
    if(k>n) return 0;
    matrice m=ciocolataaa(n, k);
    ofstream out("tablete.out");
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
            out<<m.matr[i][j]<<' ';
        out<<'\n';
    }
    out.close();
    return 0;
}