Example #1
0
int
main(void)
{
    int T, ncase, n, i, j;

    scanf("%d", &T);
    ncase = 1;
    while (T-- > 0) {
        scanf("%d%d", &M, &N);
        for (i = 0; i < M; i++)
            for (j = 0; j < N; j++) {
                scanf("%d", &n);
                uranium[i][j] = n + prev_col(uranium, i, j);
            }
        for (i = 0; i < M; i++)
            for (j = 0; j < N; j++) {
                scanf("%d", &n);
                radium[i][j] = n + prev_row(radium, i, j);
            }

       printf("Case %d: %d\n", ncase++, solve());
    }

    return 0;
}
// Start a row. If a=-1, it is the first row
// If a>0 it is a dimension to put between rows.
void Parser::start_a_row(int a)
{
  Xid prev_row(2); // dummy id as default value
  {
    Xmlp V = the_stack.top_stack()->last_addr();
    if(V) prev_row = V->get_id();
  }
  bool initial_hline=false;
  if(a>0) 
    prev_row.add_attribute(the_names[np_spaceafter],Istring(a));
  for(;;) {
    remove_initial_space_and_back_input();
    symcodes S = cur_cmd_chr.get_cmd();
    if(S==hline_cmd) {
      get_token();
      if(cur_cmd_chr.get_chr()==zero_code) {
	if(a<0) 
	  initial_hline=true;
	else
	  prev_row.add_attribute(np_bottomborder,np_true);
	continue;
      } else {
	T_cline();
	continue;
      }
    }
    if(S==end_cmd) return;
    the_stack.push1(np_row);
    if(initial_hline)
      the_stack.cur_xid().add_attribute(np_topborder,np_true);
    start_a_cell(false);
    return;
  }
}
Example #3
0
bool simple_ctable::iter::retreat(bool initial)
{
	for(;;)
	{
		if(!prev_row(initial))
			break;
		if(prev_column(true))
			return true;
		if(!initial && !source->prev())
			break;
	}
	/* need to go back forward to where we were */
	advance();
	return false;
}
Example #4
0
int
solve(void)
{
    int dp[500][500];
    int i, j;

    for (i = 0; i < M; i++) {
        for (j = 0; j < N; j++) {
            dp[i][j] = MAX(
                radium[i][j] + prev_col(dp, i, j),
                uranium[i][j] + prev_row(dp, i, j));
        }
    }

    return dp[M-1][N-1];
}