Cod sursa(job #471076)

Utilizator andra23Laura Draghici andra23 Data 16 iulie 2010 20:09:26
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.56 kb
#include<fstream.h>
ofstream g;

void f00(int n, int k){
    int i, j;
    int nr = 1;
    for (i = 1; i <= n; i++){
        for (j = 1; j <= n; j++){
            g<<nr<<" ";
            nr++;
        }
        g<<'\n';
    }
        
}

void f01(int n, int k){
    int n1 = k+1;
    int n2 = n1+k;
    int a[3][n+1];
    int i, j, nr;
    for (i = 1; i <= k; i++)
        a[1][i] = i + 1;
    nr = n2+1;
    for (i = n1 + 1; i <= n; i++){
        a[1][i] = nr;
        nr++;
    }
    a[2][1] = 1;
    nr = n1+1;
    for (i = 2; i <= k; i++){
        a[2][i] = nr;
        nr++;
    }
    for (i = k+1; i <= n; i++){
        a[1][i] = nr;
        nr++;
    }
    for (i = k+1; i <= n; i++){
        a[2][i] = nr;
        nr++;
    }
    
    for ( k = 0; k <= n/2 - 1; k++){
        nr = 2*n*k;
        for (i = 1; i <= 2; i++){
            for ( j = 1; j <= n; j++)
                g<<a[i][j]+nr<<" ";
            g<<'\n';
        }
    }
}

void f10(int n, int k){
    int i, j, nr = 1;
    int a[n+1][n+1];
    for (i = 1; i <= n; i++)
        for (j = 1; j <= k; j++){
            a[i][j] = nr;
            nr++;
        }
    for (i = 1; i <= n; i++)
        for (j = k+1; j <= n; j++){
            a[i][j] = nr;
            nr++;
        }
    for (i = 1; i <= n; i++){
        for (j = 1; j <= n; j++)
            g<<a[i][j]<<" ";
        g<<'\n';
    }    
}

void f11(int n, int k){
    int i, j, nr, p, n1,a[n+1][n+1]; 
    for (i = 1; i <= (n-1); i=i+2){
        p = k*(i-1);
        nr = 2;
        for (j = 1; j <= k; j++){
            a[i][j] = nr+p;
            nr++;
        }
        a[i+1][1] = 1 + p;
        for (j = 2; j <= k; j++){
            a[i+1][j] = nr+p;
            nr++;
        }
    }
    nr = k*(n-1);
    a[1][k+1] =++nr;
    nr++;
    
    for (j = 1; j <= k; j++){
        a[n][j] = nr;
        nr++;
    }
    
    for (i = 1; i <= n; i++)
        for (j = k+1; j <= n; j++)
            if (i == 1 && j == k+1)
                continue;
            else{
                a[i][j] = nr;
                nr++;
            }
    for (i = 1; i <= n; i++){
        for (j = 1; j <= n; j++)
            g<<a[i][j]<<" ";
        g<<'\n';
    }    
            
}

int main(){
    ifstream f("tablete.in");
    g.open("tablete.out");
    int n, k;
    f>>n>>k;
    
    if (n % 2 == 0)
        if (k % 2 == 0)
            f00(n, k);
        else f01(n, k);
    else
        if (k % 2 == 0)
            f10(n, k);
        else f11(n, k);
        
    return 0;
}