Пример #1
0
int main(void)
{
  int m, n;
  int A[MAX_N];
  int i, j;
  FILE *in, *out;

  in = fopen("lawrence.in", "r");
  out = fopen("lawrence.out", "w");

  while (fscanf(in, "%d %d", &n, &m) == 2 && (n || m)) {
    for (i = 0; i < n; i++) {
      fscanf(in, "%d", A+i);
    }

    for (i = 0; i <= n; i++) {
      for (j = 0; j <= m; j++) {
	best[i][j] = -1;
      }
    }

    compute_val(A, n);
    compute(n, m);

    fprintf(out, "%d\n", best[n][m]);
  }
  return 0;
}
Пример #2
0
NDnetwork_Data *addNDData(NDnetwork *net, int type, const char *name, 
			     double(*compute_val)(NDnetwork* net,int type,int index,void* info),
			     void *info)
{
    long i;
    int index=-1;
    double *data;
    long N;
    char tmp[255];

    if (type==0) 
	N=net->nvertex;
    else
	N=net->nfaces[type];

    if (N==0)
    {
	fprintf(stderr,"In addNDData: Cannot add data for %d-faces, as they are not defined.\n",type);
	return NULL;
    }

    index=NDDataIndex(net,type,name);
    
    if (type==0) sprintf(tmp,"vertices");
    else if (type==1) sprintf(tmp,"edges");
    else sprintf(tmp,"%d faces",type);

    if (index>=0)
    {if (verbose>1) printf ("Replacing '%s' data field for %s ... ",name,tmp);fflush(0);}
    else
    {if (verbose>1) printf ("Adding '%s' data field for %s ... ",name,tmp);fflush(0);}
    
    if (index<0)
    {
	net->ndata++;
	net->data=realloc(net->data,sizeof(NDnetwork_Data)*net->ndata);
	index=net->ndata-1;
	net->data[index].type=type;
	strcpy(net->data[index].name,name);
	net->data[index].data=malloc(N*sizeof(double));
    }
 
    data=net->data[index].data;
    
    for (i=0;i<N;i++)
	data[i] = compute_val(net,type,i,info);

    if (verbose>1) printf("done.\n");

    return &net->data[index];
}