基础组月赛第三题求调

本人用二分答案+差分写,65分,不知道哪里有问题:

#include<bits/stdc++.h>
using namespace std;
#define int long long 	
const int N=3e5+10;
int n,m,k,res;
int a[N],d[N],s[N];
struct node{
	int l,r;	
}x[N];
int check(int mid){
	int ans=0;
	for(int i=1;i<=mid;i++){
		d[x[i].l]++;
		d[x[i].r+1]--;
	}
	for(int i=1;i<=n;i++){
		s[i]=s[i-1]+d[i];
		if(s[i]>=a[i]) ans++;
	}
	for(int i=1;i<=n;i++){
		d[i]=0;
		s[i]=0;
	}
	return ans;	
}
signed main(){
	freopen("202501C.in","r",stdin);
	freopen("202501C.out","w",stdout);
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=m;i++){
		cin>>x[i].l>>x[i].r;
	}
	int l=0,r=m;
	while(l<r){
		int mid=l+r+1>>1;
		if(check(mid)<k) l=mid;
		else if(check(mid)==k){
			r=mid-1;
			res=mid;
		}
		else r=mid-1;
	}
	if(res) cout<<res;
	else cout<<r;
	return 0;
}

二分模版出错,以AC