VPARTSUM - Tổng bộ phận
Tác giả: happyboy99x
Ngôn ngữ: C++
#include<cstdio>
#include<set>
#include<algorithm>
using namespace std;
void print(set<int> s) {
for(set<int>::iterator it = s.begin(); it != s.end(); ++it)
printf("%d ", *it);
printf("\n");
}
int main() {
set<int> s;
int n, p, k, sum = 0;
scanf("%d%d%d", &n, &k, &p);
int res = p;
for(int i = 0; i < n; ++i) {
int x; scanf("%d", &x);
sum = (sum + x) % p;
set<int>::iterator it = s.upper_bound(((sum - k) % p + p) % p);
if(it != s.begin())
res = min(res, ((sum - *(--it)) % p + p) % p);
s.insert(sum);
}
printf("%d\n", res);
return 0;
}