이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define f first
#define s second
int qs[555555],a[555555];
set<pii> s;
int main()
{
int l,q;cin>>l>>q;
while(q--)
{
int n;cin>>n;
for(int i=1;i<=n;i++)
{
int x;cin>>x;
qs[i]=qs[i-1];
qs[i]+=x;
}
int g=l-qs[n],r=l-qs[n]+qs[1];
if(n==1&&qs[1]>l/2)
{
s.insert({l-qs[1]+1,qs[1]});
}
for(int i=2;i<=n;i++)
{
if(g>=qs[i]-qs[i-1]) {
r=qs[i]+g;
continue;
}
int sp=qs[i]+g-qs[i-1];
int L=sp-(qs[i]-qs[i-1]);
int R=qs[i]-qs[i-1]-1;
L+=r;
R+=r;
s.insert({L,R});
// cout<<r<<' '<<L<<' '<<R<<'\n';
r+=qs[i]-qs[i-1];
}
}
int cnt=0,R=0;
for(auto it=s.begin();it!=s.end();it++)
{
int u=(*it).f,v=(*it).s;
if(v<R) continue;
if(u>R)
cnt+=v-u+1;
else if(u<R)
cnt+=v-R;
R=v;
//cout<<u<<' '<<v<<'\n';
}
cout<<cnt;
}
# | 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... |