这是一个HackerEarth编程挑战问题。这是link
这是问题
一个庞大的罪犯网络正在JOKER下工作以摧毁和摧毁 拆除高谭市。戈登船长对这些事情非常紧张 罪犯可以做到高谭市。幸运的是,蝙蝠侠来到他的身边 救援并在蝙蝠侠的帮助下,他能够救援N. 被JOKER工作的罪犯困住的人质。他 使他们排成一列,每个N人质都被赋予身份 在1到N之间(包括)和没有2个人质具有相同的id。你是一个 新雇用的程序员被分配了跟踪的任务 作为戈登船长的人质的健康状况通过捐赠治愈他们 他们每次都服用阿司匹林。最初,每个人质的健康状况为0.然后 执行以下操作 -
•给予阿斯匹林有价值的人质 在x和y之间具有id(包括两者),它们增加了它们 通过v。呈现健康。
他要求你给他健康的总和 所有具有x和y之间的id的人质(包括两者)你能吗? 写一个跟踪戈登行动的程序?
INPUT 1st Line包含N-no。人质第二行包含M-no。的 戈登船长的行动。接下来的M行包含 “1 x y v”形式的行动,表示行动1或“ 2 x y“表示行动2。
输出对于戈登船长所做的每一个动作,如果动作1是 执行,输出什么,但如果行动2执行, 程序必须输出Gordon要求的结果。
约束
1)N <= 10 ^ 5
2)M <= 10 ^ 5
3)1&lt; = x&lt; Y'LT; = N
4)0 <= v <= 100
Sample Input
5
6
2 1 5
1 3 4 5
2 2 4
1 1 3 10
1 1 5 5
2 1 5
Sample Output
0
10
65
有一个示例输入和示例输出。在提交答案之前,您可以编译代码并在那里进行测试。我的代码传递了它。然后你可以提交你的答案。提交答案后,您的代码将针对各种测试用例进行测试。
在10次测试中,我的代码成功通过了6次测试,部分4次测试。问题是你看不到哪些测试!!
有人可以发现我的代码有什么问题,或者我错过了哪些角落案例。这是代码
#include <stdio.h>
int main() {
int N, M, i, j, x, y, v, sum, actn, arr[100001] = {0};
scanf("%d%d", &N, &M);
for (i = 1; i <= M; i++) {
scanf("%d", &actn);
if (actn == 1) {
scanf("%d%d%d", &x, &y, &v);
for (j = x; j <= y; j++)
arr[j] += v;
} else {
scanf("%d%d", &x, &y);
sum = 0;
for (j = x; j <= y; j++)
sum += arr[j];
printf("%d\n", sum);
}
}
return 0;
}
提前致谢
答案 0 :(得分:0)