//问题不在我的电脑上,问题是“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;
}