Submission #485870

#TimeUsernameProblemLanguageResultExecution timeMemory
485870rainboyČVENK (COI15_cvenk)C11
22 / 100
43 ms2196 KiB
#include <stdio.h> #define N 100000 #define X 512 int kk[X][X], n, x_, y_; int dfs1(int x, int y) { int k, k1, k2; if (x >= X || y >= X || (x & y) != 0) return 0; k1 = dfs1(x, y + 1), k2 = dfs1(x + 1, y), k = kk[x][y] + k1 + k2; if (k1 * 2 <= n && k2 * 2 <= n && (n - k) * 2 <= n) x_ = x, y_ = y; return k; } long long ans; int dist(int x1, int y1, int x2, int y2) { int d = 0; while (x1 != x2 || y1 != y2) { d++; if (x1 + y1 > x2 + y2) { if ((x1 - 1 & y1) == 0) x1--; else y1--; } else { if ((x2 - 1 & y2) == 0) x2--; else y2--; } } return d; } int main() { static int xx[N], yy[N]; int i; scanf("%d", &n); for (i = 0; i < n; i++) { scanf("%d%d", &xx[i], &yy[i]); kk[xx[i]][yy[i]]++; } dfs1(0, 0); ans = 0; for (i = 0; i < n; i++) ans += dist(xx[i], yy[i], x_, y_); printf("%lld\n", ans); return 0; }

Compilation message (stderr)

cvenk.c: In function 'dist':
cvenk.c:27:12: warning: suggest parentheses around '-' in operand of '&' [-Wparentheses]
   27 |    if ((x1 - 1 & y1) == 0)
      |         ~~~^~~
cvenk.c:32:12: warning: suggest parentheses around '-' in operand of '&' [-Wparentheses]
   32 |    if ((x2 - 1 & y2) == 0)
      |         ~~~^~~
cvenk.c: In function 'main':
cvenk.c:45:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   45 |  scanf("%d", &n);
      |  ^~~~~~~~~~~~~~~
cvenk.c:47:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |   scanf("%d%d", &xx[i], &yy[i]);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...