记录编号 317100 评测结果 AAAAAAAAAA
题目名称 梦游仙境 最终得分 100
用户昵称 Gravatar哒哒哒哒哒! 是否通过 通过
代码语言 C++ 运行时间 3.529 s
提交时间 2016-10-07 17:32:28 内存使用 217.06 MiB
显示代码纯文本
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
#define ll long long
ll read(){
	ll x=0,f=1;char ch;
	while(ch=getchar(),ch<'!');
	if(ch=='-') f=-1,ch=getchar();
	x=ch-48;
	while(ch=getchar(),ch>'!') x=x*10+ch-48;
	return x*f;
}
const ll maxn=101000;
ll n,m,size;
ll block[maxn],c[maxn],sum[400][maxn];
ll query_1(ll l,ll r,ll jump){
	ll ans=0;
	for(ll i=l;i<=r;i+=jump) ans+=c[i];
	return ans;
}
ll query_2(ll l,ll r,ll jump){
	r=r-((r-l)%jump);
	if(r<=l) return c[l];
	return sum[jump][l]-sum[jump][r+jump];
}
int main(){
	freopen("XTTMYXJ.in","r",stdin);freopen("XTTMYXJ.out","w",stdout);
	n=read(),m=read(),size=sqrt(n);
	for(ll i=1;i<=n;i++) block[i]=(i-1)/size+1;
	for(ll i=1;i<=n;i++) c[i]=read();
	for(ll i=1;i<=size;i++)
		for(ll j=n;j>=1;j--)
			sum[i][j]=sum[i][j+i]+c[j];
	for(ll i=1;i<=m;i++){
		ll l=read(),r=read(),jump=read();
		if(jump==0) printf("%lld\n",c[l]);
		else if(jump>size) printf("%lld\n",query_1(l,r,jump));
		else printf("%lld\n",query_2(l,r,jump));
	}
	getchar();getchar();
	fclose(stdin);fclose(stdout);
	return 0;
}