VPARTSUM - Tổng bộ phận
Tác giả: khuc_tuan
Ngôn ngữ: C++
#include <cstdio>
#include <set>
using namespace std;
int n, k, p, x;
int sum[100010];
int main() {
scanf("%d%d%d",&n,&k,&p);
for(int i=1;i<=n;++i) {
scanf("%d",&x);
sum[i] = (sum[i-1] + x) % p;
}
set<int> se;
se.insert(0);
int res = p+1;
for(int i=1;i<=n;++i) {
set<int>::iterator si = se.lower_bound((sum[i]-k+1+p) % p);
if(si!=se.begin()) --si;
else {
si = se.end();
--si;
}
if((sum[i]-*si+p)%p>=k)
res <?= (sum[i]-*si+p)%p;
se.insert(sum[i]);
}
printf("%d\n",res);
return 0;
}