题解
排队接水
2 条题解
-
0
#include<bits/stdc++.h> using namespace std; int n; int a[200000]; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } sort(a+1,a+n+1);//满意度高的先接水 long long s=0,c=0; //只要是正收益就可以一直接人上去 // 求每个人打水情况及其前缀和 for(int i=n;i>=1;i--){ s+=a[i];//构造前缀和 if(s<=0){//出现负收益 break; } c+=s;//计入总收益 } cout<<c; } -
0
#include<bits/stdc++.h> using namespace std; int n; int a[200000]; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } sort(a+1,a+n+1);//满意度高的先接水 long long s=0,c=0; //只要是正收益就可以一直接人上去 // 求每个人打水情况及其前缀和 for(int i=n;i>=1;i--){ s+=a[i];//构造前缀和 if(s<=0){//出现负收益 break; } c+=s;//计入总收益 } cout<<c; }
- 1