Решение задачи Количество способов с Codeforces

Без пояснения   Просмотров: 111


Задан массив a[1], a[2], ..., a[n], состоящий из n целых чисел. Посчитайте количество способов разбить все элементы массива на три непрерывные части так, чтобы сумма элементов в каждой части была одинаковой.

Более формально, нужно найти количество таких пар индексов i, j (2 ≤ i ≤ j ≤ n - 1), что .

Код

#include<iostream>
using namespace std;
#define ll long long
ll n,x,ans,a[500005];
int main()
{
    cin>>n;
    for(ll i = 0; i < n; i++)
    {
        cin>>a[i];
        a[i] = a[i] + a[i-1];
    }
    for(ll i = 0; i < n - 1; i++)
    {
        if(a[i]*3 == a[n-1]*2)  ans += x;
        if(a[i]*3 == a[n-1])  x++;
    }
    cout<<ans<<endl;
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться