Pagini recente » Cod sursa (job #1153696) | Cod sursa (job #599484) | Borderou de evaluare (job #2110588) | Cod sursa (job #378237) | Cod sursa (job #1456454)
#include <stdio.h>
#include <stdlib.h>
#include <bits/stdc++.h>
using namespace std;
int main() {
FILE *f1 = fopen("lacate.in", "r");
FILE *f2 = fopen("lacate.out", "w");
int n;
fscanf(f1, "%d", &n);
int l, c;
c = n-1;
int i, j, k, y;
int **lacate = (int **) malloc (n * sizeof(int *));
for(i = 0;i < n;i++)
lacate[i] = (int *) malloc (c * sizeof(int));
if(n%2 == 0) {
l = n/2 * (n-1);
k = 1;
for(i = 0;i < n/2;i++)
for(j = 0;j < c;j++)
lacate[i][j] = k++;
k = 0;
y = 0;
for(i = n/2;i < n;i++)
for(j = 0;j < c;j++) {
lacate[i][j] = lacate[k++][y];
if(k == n/2) {
k = 0;
y++;
}
}
}
else {
l = n/2 * (n-1) + (n-1)/2;
k = 1;
for(i = 0;i < n/2;i++)
for(j = 0;j < c;j++)
lacate[i][j] = k++;
for(j = 0;j < n/2;j++)
lacate[i][j] = k;
k = 0;
y = 0;
for(j = n/2;j < c;j++) {
lacate[i][j] = lacate[k++][y];
if(k == n/2+1) {
k = 0;
y++;
}
}
for(i = n/2+1;i < n;i++)
for(j = 0;j < c;j++) {
lacate[i][j] = lacate[k++][y];
if(y >= n/2) {
if(k == n/2) {
k = 0;
y++;
}
}
else {
if(k == n/2+1) {
k = 0;
y++;
}
}
}
}
for(i = 0;i < n;i++)
sort(lacate[i], lacate[i]+c);
fprintf(f2, "%d %d\n", l, c);
for(i = 0;i < n;i++) {
for(j = 0;j < c;j++)
fprintf(f2, "%d ", lacate[i][j]);
fprintf(f2, "\n");
}
fclose(f1);
fclose(f2);
return 0;
}