intmain(){ int ans = 0; scanf("%d", &m); for (int i = 1, t; i <= m; ++i) { scanf("%d", &t); num[t]++; } for (int i = 1; i <= 20000; ++i) { pre[i] = pre[i - 1] + num[i] * i; } for (int i = 20000; i >= 1; --i) { suf[i] = suf[i + 1] + num[i] * i; } int l = 1, r = 20000, mid; while (l <= r) { mid = l + r >> 1; if (pre[mid - 1] >= suf[mid + 1]) r = mid - 1, ans = mid; else l = mid + 1; } printf("%d\n", ans); return0; }
int n; ll t[maxn]; ll sz[maxn]; ll sum_t[maxn]; ll dp[2][maxn];
int cnt, head[maxn]; structedge {int v, w, next; } e[maxn << 1]; voidadd(int u, int v, int w){ e[++cnt] = {v, w, head[u]}; head[u] = cnt; e[++cnt] = {u, w, head[v]}; head[v] = cnt; }
voiddfs(int u, int fa){ sz[u] = 1, sum_t[u] = t[u]; for (int i = head[u]; i; i = e[i].next) { int v = e[i].v, w = e[i].w; if (v == fa) continue; dfs(v, u); dp[0][u] += dp[0][v] + sz[v] * w; dp[1][u] += dp[1][v] + sum_t[v] * w; sz[u] += sz[v]; sum_t[u] += sum_t[v]; } }
voidDFS(int u, int fa){ for (int i = head[u]; i; i = e[i].next) { int v = e[i].v, w = e[i].w; if (v == fa) continue; dp[0][v] = dp[0][u] + (sz[1] - 2 * sz[v]) * w; dp[1][v] = dp[1][u] + (sum_t[1] - 2 * sum_t[v]) * w; DFS(v, u); } }
intmain(){ scanf("%d", &n); for (int i = 1; i <= n; ++i) scanf("%lld", t + i); for (int i = 1; i < n; ++i) { int u, v, w; scanf("%d%d%d", &u, &v, &w); add(u, v, w); } dfs(1, 0); DFS(1, 0); for (int i = 1; i <= n; ++i) printf("%lld\n", dp[0][i] * t[i] + dp[1][i]); return0; }
intmain(){ scanf("%d", &n); for (int i = 1; i <= n; ++i) { scanf("%s", s[i] + 1); } int num = -1; for (int i = 1; i <= n; ++i) { int tmp = num; for (int j = 1; j <= n; ++j) { if (s[i][j] == 'B') tmp--; } if (num != -1 && tmp != 0) { puts("0"); return0; } if (num == -1) num = -tmp - 1; } num = -1; for (int j = 1; j <= n; ++j) { int tmp = num; for (int i = 1; i <= n; ++i) { if (s[i][j] == 'B') tmp--; } if (num != -1 && tmp != 0) { puts("0"); return0; } if (num == -1) num = -tmp - 1; } for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n - 2; ++j) { int num = 1; for (int k = j + 1; k <= j + 2; ++k) { if (s[i][k] != s[i][k - 1]) break; if (k == j + 2) { puts("0"); return0; } } } } for (int j = 1; j <= n; ++j) { for (int i = 1; i <= n - 2; ++i) { int num = 1; for (int k = i + 1; k <= i + 2; ++k) { if (s[k][j] != s[k - 1][j]) break; if (k == i + 2) { puts("0"); return0; } } } } puts("1"); return0; }