/****************************************************************************** * Sample solution for the Minimax Triangulation problem in NWERC'04 * Author: Andreas Björklund * Solution: Dynamic programming, by enumerating subpolygons in order of * growing size. ******************************************************************************/ #include #define MAXN (50) #define min(a,b) ((a)<(b)?(a):(b)) #define max(a,b) ((a)>(b)?(a):(b)) #define sign(a) ((a)>=0?1:-1) int x[MAXN],y[MAXN],dyn[MAXN][MAXN]; int triarea(int i,int j,int k) { return ((x[j]-x[i])*(y[k]-y[i])-(y[j]-y[i])*(x[k]-x[i])); } int main(void) { int t,i,j,k,n,sum; scanf("%d",&t); while (t--) { scanf("%d",&n); for (i=0;i1) sum += triarea(0,i-1,i); else sum=0; dyn[i][(i+1) % n]=0; } for (i=2;i