Что именно является ошибкой SIGABRT? — Codechef

// Проблема не на моем компьютере, проблема «Ошибка времени выполнения SIGABRT», когда я публикую ее // на странице codechef. Пожалуйста помоги.
// На самом деле никаких подробностей не требуется, поскольку на моем ноутбуке поступает требуемый вывод. Только // на codechef, что проблема существует.

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

// Alien Chefs вопрос о codechef

using namespace std;

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

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

// Пожалуйста, посмотрите, где я должен внести изменения, так как это первый раз, когда я размещаю что-то на codechef.
struct timeDetail
{
int count;
int curr;
int * vids;

    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;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]