Cod sursa(job #485931)

Utilizator dicu_dariaDaria Dicu dicu_daria Data 19 septembrie 2010 22:25:54
Problema Tablete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
using namespace std;
int a[1005][1005],n;
void rezolva1()
{
  int i,j;
  for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    a[i][j]=(i-1)*n+j;
}
void rezolva2()
{
  int i,j;
  for(i=1;i<=n-1;i++)
  {
    if(i%2) { for(j=1;j<=n-1;j++) a[i][j]=(i-1)*n+j; a[i][n]=(i+1)*n;}
    if(!(i%2)) for(j=1;j<=n;j++) a[i][j]=(i-1)*n+j-1;
  }
  for(i=1;i<=n;i++) a[n][i]=(n-1)*n+i;
}
void rezolva3()
{
  int i,j;
  for(i=1;i<=n-2;i++)
    for(j=1;j<=n;j++)
    a[i][j]=(i-1)*n+j+1;
  for(j=1;j<=n-1;j++) a[n-1][j]=(n-2)*n+j+1;
  a[n-1][n]=n*n;
  a[n][1]=1;
  for(j=2;j<=n;j++) a[n][j]=(n-1)*n+j-1;
}
void rezolva4()
{
  int i,j;
  rezolva2();
  for(i=1;i<=n-2;i++)
  {
    a[i][n+1]=a[i+1][1];
    for(j=1;j<=n;j++)
      a[i][j]=a[i][j+1];
    if(i%2) swap(a[i][n-1],a[i][n]);
  }
  a[n-1][n+1]=a[n][n];
  for(j=1;j<=n;j++) a[n-1][j]=a[n-1][j+1];
  for(j=n;j>1;j--) a[n][j]=a[n][j-1];
  a[n][1]=1;
}
int main()
{
    int k,i,j;
    ifstream fi("tablete.in");
    ofstream fo("tablete.out");
    fi>>n>>k;
    if(!(n%2) and !(k%2)) rezolva1();
    if((n%2) and !(k%2)) rezolva2();
    if(!(n%2) and (k%2)) rezolva3();
    if((n%2) and (k%2)) rezolva4();
    for(i=1;i<=n;i++)
    {
      for(j=1;j<=n;j++)
      fo<<a[i][j]<<" ";
      fo<<"\n";
    }
    return 0;
}