若出现脚后跟位置<缝隙位置<脚尖位置,则输出YES,否则NO,每个缝隙位置可用前缀和存入一个新的数组,通过双指针i,j,i用来遍历脚后跟位置,j用来遍历所有缝隙,对于每个i,找到大于i的j,并且检查i+l是否>j若成立,则直接YES并且return 0,反之找不到便输出NO。

#include<bits/stdc++.h>
using namespace std;
int main(){
   int n,m;
   long long l;
   cin>>n>>m>>l;
   long long sum=0;
   vector<long long> dp;
   vector<long long> x(n);
   for(int i=0;i<n;i++){
     cin>>x[i];
     sum+=x[i];
     dp.push_back(sum);
   }
   vector<long long> y(m);
   for(int i=0;i<m;i++){
      cin>>y[i];
   }
   long long p=0;
   int j=0;
   while(j<dp.size() && dp[j]<p){
     j++;
   }
   if(j<dp.size() && dp[j]>p && dp[j]<p+l){
      cout<<"YES";
      return 0;
   } 
   for(int i=0;i<m;i++){
     p+=y[i];
     while(j<dp.size() && dp[j]<p){
     j++;
   }
   if(j<dp.size() && dp[j]>p && dp[j]<p+l){
      cout<<"YES";
      return 0;
   }    
  }
   cout<<"NO";
   return 0;
}