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;
}

Download