树状数组50分求解QwQ
查看原帖
树状数组50分求解QwQ
288716
lzqy_楼主2020/5/5 10:02
#include <bits/stdc++.h>
using namespace std;
 long long a[1000001];
long long MAX=-INT_MAX;
pair<long long,long long>p[1000001];
void add(long long k,long long x)
{
  for(; k<=MAX; k+=k&-k)
    a[k]+=x;
}
long long get(long long k)
{
 long long sum=0;
  for(; k>0; k-=k&-k)
    sum+=a[k];
  return sum;
}
int main()
{
 long long n,x,y,w,ans=0;
  cin>>n>>w;
  for(int i=0; i<n; i++)
  {
    cin>>p[i].first>>p[i].second;
    MAX=max(MAX,p[i].first);
  }
  for(int i=0; i<n; i++)
    add(p[i].first,p[i].second);
  for(int i=0; i<n; i++)
    ans=max(ans,get(p[i].first+w)-get(p[i].first));
  cout<<ans;
  return 0;
}

为啥会WA五个点呢……

2020/5/5 10:02
加载中...