0

//问题不在我的电脑上,问题是“SIGABRT Run time error”当我在codechef页面上发布它时//。请帮忙。
//实际上不需要任何详细信息,因为所需的输出将出现在我的笔记本电脑上。它唯一的 //on codechef 存在问题。

#include <cstdlib> 
#include <cstdio>
#include <ctime>
#include <iostream>

//外星厨师关于codechef的问题

using namespace std;

int check(int, int[], int[]);

int *grpDone = 0;
int n, q, k, s[100001], e[100001], alienTime[21];

// 请查看我应该在哪里进行更改,因为这是我第一次在 codechef 上发布内容。结构 timeDetail { int count; 诠释当前;诠释*视频;

    timeDetail() {
        count = 0;
        curr = 0;
        vids = (int*)calloc(n, sizeof(int));
    }

    ~timeDetail() {
        free(vids);
    }

    void addVid(int n) {
        vids[curr++] = n;
    }

    int getNumVids() {
        return curr;
    }
}*atTime ;
int main() {
    int maxTime = 0;
    scanf(" %d", &n);
    for(int i=1; i<=n; i++) {
        scanf(" %d %d", &s[i], &e[i]);
        if(e[i] > maxTime)
            maxTime = e[i];
    }

    atTime = new timeDetail[maxTime+1];
    scanf(" %d", &q);
    for(int i=1; i<=q; i++) {
        scanf(" %d", &k);

        ::grpDone = (int*)calloc(n+1, sizeof(int));
        int totVids = 0;
        for(int j=1;j<=k;j++) {
            scanf(" %d", &alienTime[j]);
            int numVids = 0;
            numVids = check(alienTime[j], s, e);
            totVids += numVids;
        }
        printf("%d\n", totVids);
        free(::grpDone);
    }
    return 0;
}

int check(int t, int s[], int e[]) {
    int prevFound = atTime[t].getNumVids();
    int numVids = 0;
    if(prevFound > 0) {
        for(int i = 1; i<=prevFound; i++) {
            if(::grpDone[atTime[t].vids[i]] == 1)
                continue;
            else {
                ::grpDone[atTime[t].vids[i]] = 1;
                numVids++;
            }
        }
        return numVids;
    }
    for(int i=1; i<=n; i++) {
        if(t>=s[i] && t<=e[i]) {
            atTime[t].addVid(i);
            if(::grpDone[i] == 1) {
                continue;
            } else {
                ::grpDone[i] = 1;
                numVids++;
            }
        }
    }
    return numVids;
}
4

0 回答 0