14.01.2013 Views

Soluciones y Explicación de los problemas ACM ... - ICPC Bolivia

Soluciones y Explicación de los problemas ACM ... - ICPC Bolivia

Soluciones y Explicación de los problemas ACM ... - ICPC Bolivia

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Explicaciones a <strong>los</strong> <strong>problemas</strong> South American Regionals 2008 68<br />

Programa Java que soluciona el problema<br />

import java.util.*;<br />

class polygons {<br />

public static void main(String[] args) {<br />

Scanner in = new Scanner(System.in);<br />

int N, i, totPer, verLen, j, arcLen, k;<br />

int[] X;<br />

boolean[] per;//imeter size<br />

boolean isPos = true;//ible<br />

while(true) {<br />

N = in.nextInt();<br />

if(N == 0) break;<br />

X = new int[N];<br />

totPer = 0;<br />

for(i = 0; i < N; i++) {<br />

X[i] = in.nextInt();<br />

totPer = totPer + X[i];<br />

}<br />

per = new boolean[totPer];<br />

Arrays.fill(per, false);<br />

verLen = 0;<br />

for(i = 0; i < N; i++) {<br />

per[verLen] = true;<br />

verLen = verLen + X[i];<br />

}<br />

FOR: for(i = N; i >= 3; i--) {<br />

if((totPer % i) == 0) {<br />

arcLen = totPer / i;<br />

for(j = 0; j < arcLen; j++) {<br />

isPos = true;<br />

k = j;<br />

while(k < totPer) {<br />

if(per[k] == false) isPos = false;<br />

k = k + arcLen;<br />

}<br />

if(isPos == true) break FOR;<br />

}<br />

}<br />

isPos = false;<br />

}//<br />

if(isPos == true) System.out.println(N - i);<br />

else System.out.println("-1");<br />

}<br />

}<br />

}

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!