이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#pragma GCC optimize("O2")
#pragma GCC target("avx,avx2,fma")
#include<bits/stdc++.h>
#define ii pair<int,int>
#define fi first
#define se second
#define vi vector<int>
#define ll long long
#define FORU(i,j,n) for(int i=(j);i<=(n);i++)
#define FORD(i,j,n) for(int i=(j);i>=(n);i--)
using namespace std;
const int N=5e5+5;
int L,n;
int k[N];
vi x[N];
vi l[N],r[N];
set<ii> ans;
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>L>>n;
FORU(i,1,n)
{
cin>>k[i];
x[i].resize(k[i]+2,0);
l[i].resize(k[i]+2,0);
r[i].resize(k[i]+2,0);
FORU(j,1,k[i])cin>>x[i][j],l[i][j]=l[i][j-1]+x[i][j];
FORD(j,k[i],1)r[i][j]=r[i][j+1]+x[i][j];
FORU(j,1,k[i])
if(l[i][j-1]+r[i][j]+x[i][j]>L)ans.insert({L-r[i][j]+1,l[i][j]});
}
int res=0,pre=1,cur=0;
for(auto x:ans)
{
if(cur<x.fi)
{
res+=cur-pre+1;
pre=x.fi;cur=x.se;
}
else cur=max(cur,x.se);
}
res+=cur-pre+1;
cout<<res;
return 0;
}
# | 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... |