68pts求助!
  • 板块P1956 Sum
  • 楼主xwh_hh
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/10/18 21:28
  • 上次更新2023/10/27 06:58:01
查看原帖
68pts求助!
359444
xwh_hh楼主2022/10/18 21:28

WA

#include<bits/stdc++.h>
using namespace std;
long long a[100005],k,p;
int n;
long long sum[100005];
long long ans=0x5fffffffffffffff;
set<long long>ds; 
int main(){
	scanf("%d%lld%lld",&n,&k,&p);
	for(int i=1;i<=n;i++) scanf("%lld",a+i);
	for(int i=1;i<=n;i++) sum[i]=(sum[i-1]+a[i]%p)%p;
	ds.insert(0x5fffffffffffffff);
	for(int i=n;i>=1;i--){
		ds.insert(sum[i]);
		set<long long>::iterator it;
		it=ds.lower_bound((sum[i-1]+k)%p);
		long long x=*it;
		if(x==0x5fffffffffffffff) continue;
		ans=min(ans,(x-sum[i-1]+p)%p);
	}
	cout<<ans;
 	return 0;
}

O(nlog2n)O(n\log_2n)

2022/10/18 21:28
加载中...