#include<iostream>
#include<vector>
#include<utility>
#include<algorithm>
#include<cstring>
#include<set>
#include<map>
using namespace std;
pair<int,int> get(int a,int b,int c){
return {b-c+1,a+c-1};
}
set<int> st;
map<int,int> ep;
map<int,int> fn;
int main(){
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
int l,r,x,tmp;
cin >> l >> r;
while(r--){
vector<int> vec,raw;
vec.push_back(0);
raw.push_back(0);
int x; cin >> x;
int sum=0;
for(int i=1;i<=x;++i){
cin >> tmp;
raw.push_back(tmp);
vec.push_back(tmp);
vec[i]+=vec[i-1];
sum+=tmp;
}
ep.clear();
for(int i=0;i<x;++i){
if(vec[x-i-1]>=1){
++ep[1];
--ep[vec[x-i-1]+1];
}
pair<int,int> tmp=get(vec[x-i-1]+1,l-sum+vec[x-i],raw[x-i]);
if(tmp.second>=tmp.first){
++ep[tmp.first];
--ep[tmp.second+1];
}
if(l>=l-sum+vec[x-i]+1){
++ep[l-sum+vec[x-i]+1];
--ep[l];
}
}
int tmp=0;
int tmp2=0;
for(auto it=ep.begin();it!=ep.end();++it){
if(tmp==x){
++fn[tmp2];
--fn[it->first];
}
tmp+=it->second;
if(tmp==x){
tmp2=it->first;
}
}
}
int ftmp=0;
int ftmp2=0;
int ans=0;
for(auto it=fn.begin();it!=fn.end();++it){
if(ftmp+it->second==0){
ans+=it->first-ftmp2;
}
ftmp+=it->second;
if(ftmp-it->second==0){
ftmp2=it->first;
}
}
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... |