s.c (742B)
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <stdint.h> 5 6 int solve() 7 { 8 long long lsum = 0, rsum = 0; 9 int *lset, *rset; 10 int li = 0, ri = 0; 11 int n; 12 13 scanf("%d", &n); 14 15 lset = malloc (sizeof(int) * n); 16 rset = malloc (sizeof(int) * n); 17 18 if (n % 4 == 1 || n % 4 == 2) { 19 printf("NO\n"); 20 return 0; 21 } 22 23 printf("YES\n"); 24 25 for (int i = n; i > 0; i--) { 26 if (lsum <= rsum) { 27 lset[li++] = i; 28 lsum += i; 29 } 30 31 else { 32 rset[ri++] = i; 33 rsum += i; 34 } 35 } 36 37 printf("%d\n", li); 38 for (int i = 0; i < li; i++) 39 printf("%d ", lset[i]); 40 41 printf("\n"); 42 43 printf("%d\n", ri); 44 for (int i = 0; i < ri; i++) 45 printf("%d ", rset[i]); 46 47 printf("\n"); 48 49 return 0; 50 } 51 52 int main() 53 { 54 int t = 1; 55 while (t--) 56 solve(); 57 }