usaco吧 关注:342贴子:1,254
  • 3回复贴,共1
这个问题自己找了很久都没有找到,于是来发帖求助,望谅解
1.2 Milking cows
Execution error: Your program had this runtime error: Bad syscall #116 (sysinfo) [email kolstad if you think this is wrong]. The program ran for 0.000 CPU seconds before the error. It used 2200 KB of memory.
Test 7: SIGNAL 50 (0.000 secs, 2200 KB)


IP属地:浙江1楼2016-09-08 10:22回复
    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>
    #define DEBUG 0
    #define MAX(x,y) (((x) > (y))?(x):(y))
    struct cow
    {
    int start;
    int end;
    };
    int compare(const void *,const void *);
    int main()
    {
    #if(DEBUG == 0)
    FILE * input = fopen("milk2.in","r");
    FILE * output = fopen("milk2.out","w");
    assert(input != NULL && output != NULL);
    #endif
    int N,i,maxl = 0,maxi = 0,ns = 0,amount;
    #if(DEBUG == 0)
    fscanf(input,"%d",&N);
    #elif(DEBUG == 1)
    scanf("%d",&N);
    #endif
    struct cow * farmer = (struct cow *)malloc(sizeof(struct cow) * (N + 1));
    for(i = 1;i <= N;++i)
    {
    #if(DEBUG == 0)
    fscanf(input,"%d%d",&farmer[i].start,&farmer[i].end);
    #else
    scanf("%d%d",&farmer[i].start,&farmer[i].end);
    #endif
    }
    farmer[0].start = 0;
    qsort(farmer,N+1,sizeof(struct cow),compare);
    farmer[0].end = farmer[1].start;
    #if(DEBUG == 1)
    for(i = 0;i<=N;++i)
    printf("farmer[%d]:%d %d\n",i,farmer[i].start,farmer[i].end);
    #endif
    for(i = 1;i <= N;++i)
    {
    //printf("farmer[%d].start:%d farmer[%d].end:%d\n",i,farmer[i].start,i-1,farmer[i-1].end);
    if((farmer[i].start <= farmer[i-1].end))
    {
    if((amount = farmer[i].end - farmer[i-1].end) > 0)
    {
    ns += amount;
    }
    else farmer[i].end = farmer[i-1].end;
    }
    else
    {
    maxi = MAX(maxi,(farmer[i].start - farmer[i-1].end));
    maxl = MAX(ns,maxl);
    #if(DEBUG == 1)
    printf("i:%d ns:%d maxi:%d\n",i,ns,maxi);
    #endif
    ns = farmer[i].end - farmer[i].start;
    }
    }
    maxl = MAX(ns,maxl);
    #if(DEBUG == 0)
    fprintf(output,"%d %d\n",maxl,maxi);
    #else
    printf("%d %d\n",maxl,maxi);
    #endif
    exit(0);
    }
    int compare(const void * a,const void * b)
    {
    int c = ((const struct cow *)a)->start;
    int d = ((const struct cow *)b)->start;
    if(c > d)return 1;
    else if(c == d)return 0;
    else return -1;
    }


    IP属地:浙江3楼2016-09-08 10:33
    回复
      发邮件给kolstad,回复说是grader升级的问题……


      IP属地:浙江来自Android客户端4楼2016-09-09 09:05
      回复
        我想求这题用来测试的数据,,明明感觉自己情况都考虑到了,还是提交不了


        来自Android客户端5楼2016-11-20 10:53
        回复