士兵杀敌(五)
时间限制:2000 ms | 内存限制:65535 KB
- 输入
- 只有一组测试数据
第一行是三个整数N,C,Q(1<=N,C,Q<=1000000),其中N表示士兵的总数。
随后的C行,每行有三个整数Mi,Ni,Ai(0<=Mi<=Ni<=N,0<=Ai<=100),表示从第Mi号到第Ni号士兵所有人平均增加了Ai的军功。
再之后的Q行,每行有两个正正数m,n,表示南将军询问的是第m号士兵到第n号士兵。 - 输出
- 请对每次询问输出m号士兵到第n号士兵的总军功数,由于该数值可能太大,请把结果对10003取余后输出
- 样例输入
-
5 3 2 1 3 2 2 4 1 5 5 10 1 5 2 3
- 样例输出
-
19 6
-
1 #include<cstdio> 2 #define Max 1000005 3 int a[Max]; 4 int main() 5 { 6 //freopen("in.txt","r",stdin); 7 int i,N,C,Q,L,R,D; 8 9 scanf("%d%d%d",&N,&C,&Q); 10 for(i=0; i<C; i++) 11 { 12 scanf("%d%d%d",&L,&R,&D); 13 a[L] += D; 14 a[R+1] -= D; 15 } 16 for(i=1; i<=N; i++)//求每个元素的值 17 a[i]+=a[i-1]; 18 for(i=1;i<=N;i++)//求前i项和 19 a[i]=(a[i-1]+a[i])%10003; 20 while(Q--) 21 { 22 scanf("%d%d",&L,&R); 23 printf("%d ",(a[R]-a[L-1]+10003)%10003); 24 } 25 return 0; 26 }