// https://static.oj.uz/problem/c014a9e7a8f56bc2f9f572b0bdc08fa0/statement/ddc244fdcd6f2b1a2747c6561b1319e7dff1edb43080c46bffcfc3e9c8b6bb86/statement_en.pdf
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int L , R;
cin>> L >> R;
vector<pair<int , int>> global_unavoidable;
for(int r1 = 0 ; r1 < R ; r1++){
int n;
cin>>n;
vector<int> s(n+1) , p(n+1, 0);
for(int i = 1 ;i <= n; i++){
cin>>s[i];
p[i] = p[i-1]+s[i];
}
int S = p[n];
int F = L - S;
if(F <= 0){
cout<<L;
return 0;
}
vector<pair<int ,int>> avoid;
for(int i = 0 ; i <= n ; i++){
int l = p[i] + 1;
int r = p[i]+ F;
if(l >= 1 && r <= L && l<= r){
avoid.emplace_back(l , r);
}
}
if(avoid.empty()){
global_unavoidable.emplace_back(1 , L);
continue;
}
vector<pair<int ,int>> merged_avoid;
for(int i = 0 ; i < avoid.size() ;i++){
int l = avoid[i].first;
int r = avoid[i].second;
if(merged_avoid.empty() || merged_avoid.back().second + 1 < l){
merged_avoid.emplace_back(l , r);
}
else{
if(r > merged_avoid.back().second){
merged_avoid.back().second = r;
}
}
}
int cur = 1;
// taking complement of merged_avoid;
for(int i = 0 ; i < merged_avoid.size() ; i++){
int l = merged_avoid[i].first;
int r = merged_avoid[i].second;
if(cur < l){
global_unavoidable.emplace_back(cur , l -1);
}
cur = max(cur ,r+1);
if(cur > L)break;
}
if(cur <= L){
global_unavoidable.emplace_back(cur , L);
}
}
sort(global_unavoidable.begin() , global_unavoidable.end());
if(global_unavoidable.empty()){
cout<<0;
return 0;
}
pair<int ,int> cur = global_unavoidable[0];
int ans = 0;
for(int i = 1 ;i < global_unavoidable.size() ;i++){
if(cur.second + 1 < global_unavoidable[i].first){
ans+=(cur.second - cur.first + 1);
cur = global_unavoidable[i];
}
else{
cur.second = max(cur.second , global_unavoidable[i].second);
}
}
ans += cur.second - cur.first + 1;
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... |