Pagini recente » Cod sursa (job #1668090) | Cod sursa (job #2990783) | Cod sursa (job #2242564) | Cod sursa (job #1719477) | Cod sursa (job #533071)
Cod sursa(job #533071)
#include<fstream>
#include<algorithm>
#define NMAX 1004
using namespace std;
int a[NMAX][NMAX], n, k;
ifstream f("tablete.in");
ofstream g("tablete.out");
void Citeste()
{
f>>n>>k;
}
void Umple1()
{
int i, j;
for (i=1; i<=n; ++i)
{
for (j=1; j<=n; ++j)
g<<(i-1)*n+j<<" ";
g<<"\n";
}
}
void Umple2()
{
int i, j, L;
for (i=1; i<=n; ++i)
{
a[i][n]=(i-1)*n+1;
for (j=1, L=(i-1)*n+2; j<n; ++j, ++L)
a[i][j]=L;
}
}
void Scrie()
{
int i, j;
for (i=1; i<=n; ++i)
{
g<<a[i][1];
for(j=2; j<=n; ++j)
g<<" "<<a[i][j];
g<<"\n";
}
}
void Inverseaza()
{
int i, j;
for (i=1, j=n; i<=n; ++i)
swap(a[i][j], a[j][i]);
}
void Modifica2()
{
swap(a[k][1], a[n][k]);
}
void Umple3()
{
int i, j;
for (i=1; i<=n; ++i)
if (i%2==1)
for (j=1; j<=n; ++j)
a[i][j]=(i-1)*n+j;
else
{
a[i][n]=(i-1)*n+1;
for (j=1; j<n; ++j)
a[i][j]=(i-1)*n+j+1;
}
}
void Umple4()
{
int i, j;
for (i=1; i<=n; ++i)
if (i%2==0 || i==n)
for (j=1; j<=n; ++j) a[i][j]=(i-1)*n+j;
else
{
a[i][n]=(i-1)*n+1;
for (j=1; j<n; ++j)
a[i][j]=(i-1)*n+j+1;
}
}
void Modifica4()
{
swap(a[n][k], a[k][1]);
}
void Solve()
{
if (n%2==0)
if (k%2==0) Umple1();
else
{
Umple2();
Inverseaza();
Modifica2();
Scrie();
}
else
if (k%2==0)
{
Umple3();
Inverseaza();
}
else
{
Umple4();
Inverseaza();
Modifica4();
Scrie();
}
}
int main()
{
Citeste();
Solve();
f.close();
g.close();
return 0;
}