代码求调
查看原帖
代码求调
525141
_shine_楼主2024/5/22 18:11

错了一个点,rt。

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int maxn=3e5+10;
int ll,n1,n2;
int v[3][maxn],l[3][maxn];
int s1[maxn],s2[maxn];
signed main(){
   cin >> ll >> n1 >> n2;
   for(int i=1;i<=n1;++i){cin >> v[1][i] >> l[1][i];s1[i]=s1[i-1]+l[1][i];}
   for(int i=1;i<=n2;++i){cin >> v[2][i] >> l[2][i];s2[i]=s2[i-1]+l[2][i];}
   int idx=1;s2[n2+1]=s2[n2];int ans=0;
   for(int i=1;i<=n1;++i){
       while(idx>=1 && s2[idx]>=s1[i-1]+1)idx--;
       while(idx<=n2 && s1[i-1]+1>s2[idx])idx++;
       while(idx<=n2 && s1[i]>s2[idx-1]+1){
           if(v[1][i]==v[2][idx]){
               ans+=(min(s1[i],s2[idx])-max(s2[idx-1]+1,s1[i-1]+1)+1);
           }
           idx++;
       }
   }
   cout << ans << endl;
   return 0;
}
2024/5/22 18:11
加载中...