Las redes sociales, damos todo el mundo define una "actividad", según este indicador esperan ahora la multitud divide en dos categorías, a saber, orientada a la exportación (de salida, es decir, alta activo) e interior (introvertido, es decir, una baja actividad a). Requiere dos poblaciones de escala lo más cerca posible, y su actividad total se abrió la brecha tanto como sea posible.
Formato de entrada:
dada una entrada positiva de la primera línea número entero N (≦ n ≦ 10
5.
). Entonces da línea de N enteros positivos, respectivamente, de la actividad de cada persona, separadas por un espacio entre ellos. Estos números y su garantía de titularidad y no excederán de 2
31
.
Los formatos de salida:
los siguientes formatos de salida:
# Saliente: N1
introvertido #: N2
Dif = N3
Donde N1 es el número de personas orientadas; es el número de N2 persona introvertido; N3 es el valor absoluto de la diferencia entre la actividad total de dos grupos de personas.
Ejemplo de entrada 1:
10
2,381,099,462,333,461,666 555
Salida de muestra 1:.
El saliente # :. 5
introvertido # :. 5
Dif = 3611
Muestra de entrada 2:
13 es
110 79 2.186.937.211.002.913.526 5188 85 13 es
Muestra Producto 2:
el saliente # :. 7
introvertido # :. 6
Dif = 9359
#include <stdio.h>
#include <stdlib.h>
int comfunc(const void *elem1, const void *elem2);
void sort_character(int *p, int n);
int main()
{
int n, i;
int a[100001];
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
qsort(a, n, sizeof(int), comfunc);
sort_character(a, n);
return 0;
}
int comfunc(const void *elem1, const void *elem2)
{
int *p1 = (int*)elem1;
int *p2 = (int*)elem2;
return *p1 - *p2;
}
void sort_character(int *p, int n)
{
int i, j, n1, n2, sum1, sum2, dif, dif1, dif2;
sum1 = sum2 = 0; dif = dif1 = dif2 = 0;
if (n % 2 == 0)
{
n1 = n2 = n / 2;
for (i = 0; i < n1; i++)
sum1 += p[i];
for (i = n1; i < n; i++)
sum2 += p[i];
dif = abs(sum2 - sum1);
}
else
{
n1 = n2 = n / 2;
// dif1 = abs(p[n1] - p[n1 - 1]); //总活跃度差值!!! 不是两个之间之差。
// dif2 = abs(p[n2] - p[n2 + 1]);
for (i = 0; i < n1; i++)
sum1 += p[i];
for (i = n / 2 + 1; i < n; i++)
sum2 += p[i];
dif1 = abs(sum1 + p[n1] - sum2);
dif2 = abs(sum2 + p[n2] - sum1);
dif = (dif1 > dif2) ? dif1 : dif2;
if (dif1 > dif2)
n1++;
else
n2++;
}
printf("Outgoing #: %d\n", n2);
printf("Introverted #: %d\n", n1);
printf("Diff = %d\n", dif);
}