Submission #1268335

#TimeUsernameProblemLanguageResultExecution timeMemory
1268335nadeshikoLasers (NOI19_lasers)C++20
100 / 100
268 ms16824 KiB
#include <bits/stdc++.h> using namespace std; int main() { long long Len,r; cin>>Len>>r; vector<pair<long long,long long>>ev; for(int j=0; j<r; j++) { 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++)cout<<pref[i]<<' '<<suff[i]<<'\n'; for(int i=1; i<=n; i++) { long long x=pref[i]; long long y=Len-suff[i]+1; if(x>=y) { long long l=y; long long rpos=x; if(l<1) l=1; if(l<=rpos) { ev.push_back({l,1}); ev.push_back({rpos+1,-1}); } } } } long long ans=0; long long pre=0; long long m=ev.size(); sort(ev.begin(),ev.end()); for(int i=0;i<m;i++){ auto [x,sign]=ev[i]; pre+=sign; if(pre>0){ ans+=(i+1<m?ev[i+1].first-x:Len-x+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...