Pagini recente » Cod sursa (job #1156459) | Cod sursa (job #3123178) | Cod sursa (job #1092941) | Cod sursa (job #2593975) | Cod sursa (job #2049333)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("tablete.in");
ofstream fout("tablete.out");
int n, k, i, j, s, v[1002][1002];
char saux[15];
char sir[3000000];
void transforma (int n, char s[]) {
/// in s am valori pe pozitii de la 0 la k-1, mereu
int k = 0;
if (n < 10) {
k = 1;
s[0] = n + '0';
} else {
while (n!=0) {
s[k] = n%10 + '0';
k++;
n /= 10;
}
}
s[k] = 0;
for (int i=0, j=k-1;i<j;i++,j--) {
swap(s[i], s[j]);
}
}
int main () {
fin>>n>>k;
if(n%2==0 && k%2==0){
for(i=1; i<=n; i++){
strcpy(sir, "");
for(j=1; j<=n; j++){
transforma((i-1)*n+j, saux);
strcat(sir, saux);
strcat(sir, " ");
/// fout<<(i-1)*n+j<<" ";
}
fout<<sir<<"\n";
}
}
if(n%2==1 && k%2==0){
s=n;
for(i=1; i<=n; i++){
strcpy(sir, "");
for(j=1; j<=n; j++){
if(j==1){
transforma(i, saux);
strcat(sir, saux);
strcat(sir, " ");
}else{
s++;
transforma(s, saux);
strcat(sir, saux);
strcat(sir, " ");
}
}
fout<<sir<<"\n";
}
}
if(n%2==0 && k%2==1){
for(i=1; i<=n; i++){
for(j=1; j<=n; j++){
v[i][j]=(i-1)*n+j;
}
}
for(i=1; i<=n; i=i+2){
for(j=2; j<=n; j++){
swap(v[i][j], v[i+1][j-1]);
}
}
for(i=1; i<=n; i++){
strcpy(sir, "");
for(j=1; j<=n; j++){
transforma(v[i][j], saux);
strcat(sir, saux);
strcat(sir, " ");
}
fout<<sir<<"\n";
}
}
if(n%2==1 && k%2==1){
for(i=1; i<=n; i++){
for(j=1; j<=n; j++){
v[i][j]=(j-1)*n+i;
}
}
j=k;
for(i=1; i<=n; i++){
if(v[i][j]%2==1){
if(i==1)
swap(v[i][j], v[i+2][j-1]);
else
swap(v[i][j], v[i-2][j+1]);
}
}
for(i=1; i<n; i++){
for(j=i+1; j<=n; j++){
if(v[i][k+1]>v[j][k+1]){
swap(v[i][k+1],v[j][k+1]);
}
if(v[i][k]>v[j][k]){
swap(v[i][k],v[j][k]);
}
}
}
for(i=1; i<=n; i++){
strcpy(sir, "");
for(j=1; j<=n; j++){
transforma(v[i][j], saux);
strcat(sir, saux);
strcat(sir, " ");
}
fout<<sir<<"\n";
}
}
}