ZZULIOJ 2348: 小明的第一份實習任務
阿新 • • 發佈:2018-11-30
題目描述
日誌系統是分散式系統的重要組成部分,決定著系統的成敗。工業界一種比較常見的的日誌處解決方案是通過訊息佇列將系統產生的日誌資訊非同步的儲存起來,再通過日誌分析服務進行相應的日誌分析,常用的訊息佇列如kafka,rabbitMQ等。
小明作為剛剛入職的實習生,leader交給了它一個任務:統計給定時間段產生的日誌數量(時間用類似unix時間戳的方法表示)。可這個對他來說太難了,你能幫幫他嗎?
輸入
第一行輸入兩個整數n,m (0 < n < 1e5, 0 < m < 1e6),n表示要統計[0,n)時間內的日誌數量,m表示小明統計的次數。
第二行輸入n個整數,第i(0 <= i < n, 0 <= Ai <= 10)個數代表系統在 i 這個時間戳產生的日誌數量。 接下來m行,每行輸入兩個整數t1,t2 (0 <= t1,t2 < n),表示小明同學要統計的區間。
輸出
對於每個區間[t1,t2],輸出在這一時間段產生的日誌數量。
樣例輸入5 3
1 2 0 4 7
0 1
2 4
1 3
樣例輸出3
11
6
提示請注意問題規模:時間段數量n達十萬個,而詢問次數達一百萬次。如果你採用低效率方法,將會超時,請注意優化。
#include<stdio.h>
int main(){
int m,n,t1,t2,j,i,x;
int a[100000],b[1000000],sum[100000];
sum[0]=0;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++){
scanf("%d",&a[i- 1]);
sum[i]=sum[i-1]+a[i-1];
}
for(j=0;j<=m-1;j++){
scanf("%d%d",&t1,&t2);
x=sum[t2+1]-sum[t1];
b[j]=x;
}
for(j=0;j<=m-1;j++){
printf("%d\n",b[j]);
}
return 0;
}