466C Codeforces
Number of ways
Solution in c++
#include <iostream>
#include <numeric>
using namespace std;
   int nn[500001],dp[500001];
int main()
{
   long long n,sum=0;
   cin>>n;
   for(int i=0;i<n;i++){
        cin>>nn[i];
        sum+=nn[i];
   }
   if(sum%3){
    cout<<"0\n";
    return 0;
   }
    long long suf=0,pre=0,sol=0;
   for(int i=n-1;i>=0;i--){
        suf+=nn[i];
        if(i<n-1)dp[i]=dp[i+1];
        else dp[i]=0;
        if(suf==sum/3)dp[i]++;
   }
   for(int i=0;i<n-2;i++){
        pre+=nn[i];
        if(pre==sum/3)sol+=dp[i+2];
   }
    cout<<sol<<"\n";
    return 0;
}
0 التعليقات:
إرسال تعليق