1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
/*
ID: mytbk921
LANG: C
TASK: ariprog
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int cmp(const void* a, const void* b)
{
return *(int*)a - *(int*)b;
}
int main()
{
FILE *fin, *fout;
int n,m,setSize,i,j,diff,step,maxdiff,count=0;
int myset[251*251];
fin = fopen("ariprog.in", "r");
fout = fopen("ariprog.out", "w");
fscanf(fin, "%d%d", &n, &m);
fclose(fin);
setSize = 0;
for (i=0; i<=m; i++){
myset[i] = i*i;
}
setSize = m+1;
for (i=1; i<=m; i++){
for (j=i; j<=m; j++){
myset[setSize] = myset[i]+myset[j];
setSize++;
}
}
qsort(myset, setSize, sizeof(myset[0]), cmp);
maxdiff = myset[setSize-1]/(n-1);
if (n>=6){
step = 12;
}else if (n>=4){
step = 4;
}else{
step = 1;
}
for (diff=step; diff<=maxdiff; diff+=step){
for (i=0; i<setSize; i++){
if (i>0 && myset[i]==myset[i-1]){
continue;
}
int curr = myset[i];
for (j=1; j<n; j++){
curr += diff;
if (bsearch(&curr, myset, setSize, sizeof(myset[0]), cmp)==NULL){
break;
}
}
if (j<n){
continue;
}else{
count++;
fprintf(fout, "%d %d\n", myset[i], diff);
}
}
}
if (count==0){
fprintf(fout, "NONE\n");
}
fclose(fout);
return 0;
}
|