1 solutions
-
1
这个数列每个数的相对大小不变,排序后只需二分
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int NR=500002; int a[NR]; long long s[NR]; int main() { int n,m,i; long long ad=0; cin>>n>>m; for(i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1); for(i=n;i>=1;i--) s[i]=s[i+1]+a[i]; while(m--) { int op; cin>>op; if(op==1) { int k; cin>>k; ad+=k; } else { int p=lower_bound(a+1,a+n+1,-ad)-a; cout<<s[p]+ad*(n-p+1)<<endl; } } return 0; }
- 1
Information
- ID
- 8637
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 3
- Tags
- # Submissions
- 2
- Accepted
- 1
- Uploaded By