xyz

 avatar
user_6197949313
c_cpp
3 years ago
863 B
3
Indexable
// 5 7
// 3 3 9 9 5

// OUTPUT: 6: phan du lon nhat cua tong 1 day con cua A khi chia cho m

#include <iostream>
#include <algorithm>
#include <cmath>
#include <set>

using namespace std;

long maxSubArray(long arr[], long n, long m) {
    long result = 0;
    long prefix = 0;
    set<long> sPrefix;
    set<long>:: iterator it;
    sPrefix.insert(0);
    for (long i = 0; i < n; ++ i) {
        prefix = (prefix + arr[i]) % m;

        result = max(result, prefix);

        it = sPrefix.lower_bound(prefix + 1);
        if (it != sPrefix.end()) {
            result = max (result, prefix - (*it) + m);
        }

        sPrefix.insert(prefix);
    }

    return result;
}

int main()
{
    long n, m;
    cin >> n >> m;
    long arr[n];

    for (long i = 0; i < n; ++i)
    {
        cin >> arr[i];
    }

    cout << maxSubArray(arr, n, m);

    return 0;
}
Editor is loading...