Pagini recente » Cod sursa (job #1217169) | Cod sursa (job #893769) | Cod sursa (job #299833) | Cod sursa (job #876793) | Cod sursa (job #2031181)
#include <fstream>
using namespace std;
ifstream f("tablete.in");
ofstream g("tablete.out");
int n, k, a[1000][1000];
int lk[1000];
void form_lk()
{
for(int i=1; i<n; i++)
{
int x=n*(i-1) + (k-1);
if(x%2 == 1)
x--;
a[i][k]=x+2;
lk[i]=x+2;
}
a[n][k] = (n*n-(n-k))/2*2;
lk[n] = a[n][k];
}
int caut_bin(int nr, int i, int j)
{
int num = (i+j)/2;
if(nr == lk[num])
return 1;
else
{
if (i<j)
{
if (nr<lk[num])
caut_bin(nr, i, num-1);
else caut_bin(nr, num+1, j);
}
else return 0;
}
}
void jum1()
{
int nr=1;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=k-1; j++)
{
while(caut_bin(nr, 1, n) == 1)
nr++;
a[i][j] = nr;
nr++;
}
}
}
void jum2()
{
///caz_n();
int l=n;
int vmax = a[l][k];
int nr = n*n;
for(int i=n; i>=1; i--)
{
for(int j=n; j>=k+1; j--)
{
if(nr == vmax)
{vmax = a[--l][k]; nr--;}
a[i][j] = nr;
nr--;
}
}
}
void afis()
{
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
g<<a[i][j]<<" ";
g<<endl;
}
}
int main()
{
f>>n>>k;
if(n%2==0 && k % 2 == 0)
{
for(int i=1; i<=n; i++)
{
for(int j=n*(i-1) + 1; j<=n*i; j++)
g<<j<<" ";
g<<'\n';
}
}
else{
form_lk();
jum1();
jum2();
afis();
}
return 0;
}