#include <stdio.h>
int main()
{
int a[1000000];
int b;
int c;
int d;
int e;
int f;
int i;
int g;
while(scanf("%d",&b)!=EOF){
scanf("%d",&c);
for(i=0;i<b;i++){
scanf("%d",&a[i]);
}
for(i=0;i<c;i++){
scanf("%d",&d);
scanf("%d",&e);
for(g=d-1;g<e;g++){
f=f+a[g];
}
printf("%d\n",f);
f=0;
}
}
}
0.8 s 是上來求助嗎?
#include
int main()
{
int a[1000000];
int b;
int c;
int d;
int e;
int f;
int i;
int g;
while(scanf("%d",&b)!=EOF){
scanf("%d",&c);
for(i=0;i<b;i++){
scanf("%d",&a[i]);
}
for(i=0;i<c;i++){
scanf("%d",&d);
scanf("%d",&e);
for(g=d-1;g<e;g++){
f=f+a[g];
}
printf("%d\n",f);
f=0;
}
}
}
0.5s:
#include <iostream>
using namespace std;
int main()
{
int n, m, start, end, temp;
while (cin >> n >> m)
{
int *saturation=new int[n]{};
for (int i=0; i<n; i++)
{
cin >> temp;
saturation[i]+=temp+(i?saturation[i-1]:0);
}
for (int i=0; i<m; i++)
{
cin >> start >> end;
cout << saturation[end-1]-(start-2<0?0:saturation[start-2]) << endl;
}
delete[] saturation;
}
}
#include
int main()
{
int a[1000000];
int b;
int c;
int d;
int e;
int f;
int i;
int g;
while(scanf("%d",&b)!=EOF){
scanf("%d",&c);
for(i=0;i<b;i++){
scanf("%d",&a[i]);
}
for(i=0;i<c;i++){
scanf("%d",&d);
scanf("%d",&e);
for(g=d-1;g<e;g++){
f=f+a[g];
}
printf("%d\n",f);
f=0;
}
}
}
0.5s:
#include
using namespace std;
int main()
{
int n, m, start, end, temp;
while (cin >> n >> m)
{
int *saturation=new int[n]{};
for (int i=0; i<n; i++)
{
cin >> temp;
saturation[i]+=temp+(i?saturation[i-1]:0);
}
for (int i=0; i<m; i++)
{
cin >> start >> end;
cout << saturation[end-1]-(start-2<0?0:saturation[start-2]) << endl;
}
delete[] saturation;
}
}
你們寫的好複雜喔
其實就建表(我們就當是一個a陣列)就好了
然後再輸出a[r]-a[l-1]
這樣就可以再0.1s內
再加getchar和putchar就可以上榜了