Finalmente resolví 1058 - Lifting the stones. Para mi gusto el mejor problema del set. Se resume así: Dado un polígono simple (es decir, que no se intersecta a sí mismo) que representa una lámina de densidad superficial constante, encontrar las coordenadas del centro de masa de la lámina.
Resolví este problema aplicando el Teorema de Green, que relaciona la integral doble de una región con la integral de línea de la curva que la encierra. En otras palabras:
donde
es un campo vectorial de la forma
.
Ahora bien, la coordenada
centro de masa de una lámina plana está dada por:
donde
es la función de densidad (en este problema una constante que podemos considerar
) y
es la masa neta de la lámina.
Similarmente, la coordenada
es:
.
La parte crítica del problema es ver que las integrales dobles que aparecen en los denominadores se pueden expresar como una integral de línea, y esta se puede evaluar conociendo los puntos del polígono porque un polígono simple es una curva cerrada suave a trozos donde cada trozo es una recta.
Sea
un campo vectorial con la forma  , Q(x,y) > = < 0, \frac{x^2}{2} > )
Derivando parcialmente obtenemos que:

Que es justamente la función que queremos integrar.
Aplicando el Teorema de Green llegamos a que:
 \, dA)

pero como el polígono es una curva suave a trozos podemos expresar esta última integral como la suma de una integral por tramo:


Ahora sólo hace falta parametrizar la curva
para evaluar esta integral de línea.
Dado que
es una recta que va de los puntos
a
la parametrizamos con la función vectorial
donde el parámetro
La primera coordenada de esta función es lo que hemos llamado
y la segunda es lo que hemos llamado
, y
es la pendiente de la recta
. Derivando estás funciones vemos que
y
.
Entonces nuestra integral de línea en cuestión queda


Una integral fácil de evaluar cuyo resultado es
 )
Teniendo en cuenta que
y aplicando un poco de álgebra, vamos a llegar por fin a la solución:
 (x_{i+1}^2 + x_{i+1} x_{i} + x_{i}^2) )
Para la coordenada
es un proceso casi idéntico, pero me da mucha pereza escribirlo acá.
La respuesta es:
 (y_{i+1}^2 + y_{i+1} y_{i} + y_{i}^2) )
Sólo faltan dos detalles para poder codificar una solución aceptada por el juez: Para efectos de este problema, la masa es directamente proporcional al área del polígono. El área se encuentra con el algoritmo explicado en el libro Programming Challenges de Miguel Revilla. El otro detalle es que el teorema de Green nos exige que la curva cerrada esté orientada en sentido antihorario, así que si el polígono original está en sentido horario hay que reversarlo antes de correrle este algoritmo.
Tengo que decir que gran parte de esto salió de la cabezota de Arcila.
De cualquier modo, aquí está el código: 1058.cpp
Ahh por cierto, pudieron ahorrarse el trabajo de leer toda esta vomitadera matemática leyendo esto (Tal vez debí poner este anuncio arriba).