c - 在 IDE 上运行良好,但在提交时出现运行时错误(SIGSEGV)

标签 c

https://www.codechef.com/problems/CLEANUP/

经过漫长而成功的一天准备宴会食物后,是时候清理了。在厨房晚上关闭之前,有一份要做的 n 项工作 list 。这些职位的索引从 1 到 n。

大部分厨师已经离开,只剩下厨师和他的助手来清理。值得庆幸的是,一些厨师在离开之前处理了一些工作,因此 n 份工作中只剩下一部分。厨师和他的助手按以下方式分配剩余的工作。厨师拿走索引最少的未完成的工作,助理拿走索引第二少的未完成的工作,厨师拿走索引第三少的未完成的工作,等等。也就是说,如果未完成的工作按其升序排列索引,那么厨师将从列表中的第一项工作开始处理所有其他工作,助理将从列表中的第二个工作开始处理所有其他工作。

厨师们在离开前记录了他们完成的工作。不幸的是,这些工作没有按任何特定顺序记录。给定一个未排序的列表 在完成的工作中,您要确定厨师必须完成哪些工作以及他的助手必须在关闭厨房之前完成哪些工作 晚上。 输入

第一行包含一个整数 T ≤ 50,指示要遵循的测试用例的数量。每个测试用例由两行组成。第一行包含两个数字 n,m,满足 0 ≤ m ≤ n ≤ 1000。其中,n 是关闭前必须完成的作业总数,m 是已经完成的作业数。第二行包含 m 个 1 到 n 之间的不同整数的列表。这些是已完成作业的索引。连续的整数由一个空格分隔。 输出

每个测试用例的输出由两行组成。第一行是分配给 Chef 的工作索引列表。第二行是分配给他的助手的工作索引列表。两个列表必须以索引递增的顺序出现,并且连续的整数应该用一个空格分隔。如果厨师或助理没有分配任何工作,那么他们对应的行应该是空白的。 示例

输入:

3
6 3
2 4 1
3 2
3 2
8 2
3 8

输出:

3 6
5
1

1 4 6
2 5 7

代码:

#include<stdio.h>
int main() {
    int t=0,n=0,m=0,i=0,count=0,val=0,j=0;
    int arr[100]={0};
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        scanf("%d",&m);
        for(i=0;i<m;i++)
        {
           scanf("%d",&arr[i]);
        }

        val=0;
        for(i=1;i<=n;i++)
        {
               count=0;
             for(j=0;j<m;j++)
             {
                 if(i==arr[j])
                 {
                     count=1;
                     break;
                 }
             }
             if(count==0)
             {
                 val=val+1;
                 if(val%2!=0)
                 printf("%d ",i);
             }
        }
        printf("\n");
        val=0;
        for(i=1;i<=n;i++)
        {
               count=0;
             for(j=0;j<m;j++)
             {
                 if(i==arr[j])
                 {
                     count=1;
                     break;
                 }
             }
             if(count==0)
             {
                 val=val+1;
                 if(val%2==0&&val!=0)
                 printf("%d ",i);
             }
        }
        printf("\n");
    }
    return 0;
}  

在 IDE 上运行良好,但给出 提交时出现运行时错误(SIGSEGV)..请帮助

最佳答案

The first line contains two numbers n,m satisfying 0 ≤ m ≤ n ≤ 1000

这向我表明

int arr[100]={0};

不足以满足所有测试用例。将其更改为:

int arr[1000]={0};

关于c - 在 IDE 上运行良好,但在提交时出现运行时错误(SIGSEGV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31591044/

相关文章:

C:指向相同值的指针数组

c - 为什么这段代码无法执行呢?

c - 我的 Win32 应用程序不会退出主循环

c - 如何在c中获取屏幕截图

c - Lua 在 PPC Micro 上的足迹

C - 我可以在结构中定义默认函数指针吗?

c - 错误 : request for member 'data' in something not a structure or union|

c - 基础C题(初级)

c - 编译引用同一个头文件的两个C文件报错 'duplicate definition'

c - 如何分析在 FreeBSD 上运行的持续运行的服务器