#include <bits/stdc++.h>
using namespace std;
struct BIT
{
long long n;
vector<long long>bit;
void init(long long _n)
{
n=_n;
bit.assign(n+1,0);
}
BIT(long long n)
{
init(n);
}
void update(long long id,long long val)
{
for(; id<=n; id+=id&-id)
{
bit[id]+=val;
}
}
long long get(long long id)
{
long long sum=0;
for(; id>0; id-=id&-id)
{
sum+=bit[id];
}
return sum;
}
long long query(long long l,long long r)
{
return get(r)-get(l-1);
}
};
int main()
{
long long Len,r;
cin>>Len>>r;
BIT bit(Len);
for(int i=0; i<r; i++)
{
long long n;
cin>>n;
vector<long long>a(n);
for(int i=0; i<n; i++)cin>>a[i];
vector<long long>pref(n+1,0);
vector<long long>suff(n+2,0);
for(int i=1; i<=n; i++)
{
pref[i]=pref[i-1]+a[i-1];
}
for(int i=n; i>=1; i--)
{
suff[i]=suff[i+1]+a[i-1];
}
for(int i=1;i<=n;i++){
long long x=Len-pref[i];
long long y=suff[i];
if(x-y>=0){
bit.update(y+1,1);
bit.update(x+1,-1);
}
}
}
long long ans=0;
for(int i=0;i<Len;i++){
if(bit.get(i+1)==0){
ans++;
}
}
cout<<ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |