Submission #1299894

#TimeUsernameProblemLanguageResultExecution timeMemory
1299894chaitanyamehtaLasers (NOI19_lasers)C++20
100 / 100
255 ms17792 KiB
// 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...