Cod sursa(job #237442)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 29 decembrie 2008 20:31:55
Problema Tablete Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include<stdio.h>
int n,k,a[1001][1001];
void solve1(){
    int i,j;
    for(i=1; i<=n; ++i){
        for(j=1; j<=n; ++j)
            printf("%d ",a[i][j]);
        printf("\n");}}
void solve2(){
    int i,j,aux;
    for(i=1; i<n; ++i){
        aux=a[i+1][1];
        a[i+1][1]=a[i][k];
        for(j=k; j<n; ++j)
            a[i][j]=a[i][j+1];
        a[i][n]=aux;}
    aux=a[n][1];
    a[n][1]=a[n-1][n];
    a[n-1][n]=a[n][k];
    for(i=k; i>1; --i)
        a[n][i]=a[n][i-1];
    a[n][1]=aux;
    for(i=1; i<=n; ++i){
        for(j=1; j<=n; ++j)
            printf("%d ",a[i][j]);
        printf("\n");}}
void solve3(){
    int i,j,aux;
    for(i=2; i<n; i+=2){
        aux=a[i+1][1];
        a[i+1][1]=a[i][k];
        for(j=k; j<n; ++j)
            a[i][j]=a[i][j+1];
        a[i][n]=aux;}
    for(i=1; i<=n; ++i){
        for(j=1; j<=n; ++j)
            printf("%d ",a[i][j]);
        printf("\n");}}
void read(){
    int i,j,x=0;
    scanf("%d%d",&n,&k);
    for(i=1; i<=n; ++i)
        for(j=1; j<=n; ++j)
            a[i][j]=++x;
    if(n%2==0&&k%2==0)
        solve1();
    else if(n%2==0&&k%2!=0)
        solve2();
    else if(n%2!=0&&k%2==0)
        solve3();}
    /*else if(n%2!=0&&k%2!=0)
        solve4();}*/
int main(){
    freopen("tablete.in","r",stdin);
    freopen("tablete.out","w",stdout);
    read();
    return 0;}