xyz
user_6197949313
c_cpp
3 years ago
863 B
6
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...