This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "wiring.h"
#include<bits/stdc++.h>
using namespace std;
#define sz size()
typedef long long ll;
#define all(x) (x).begin(),(x).end()
const int N = 2e5+2;
ll a[N];
long long min_total_length(std::vector<int> r, std::vector<int> b) {
ll n = r.sz, m = b.sz;
for(int i = 0; i < n; i++) a[r[i]] = 1;
for(int i = 0; i < m; i++) a[b[i]] = 0;
ll newlst = 0,start = 1,ans=0;
for(int i = 1; i <= m+n; i++)
{
if(i==m+n||a[i+1]!=a[i])
{
ll en = i;
for(int j = start; j <= en; j++)
{
ll lst = newlst; newlst = 0;
ll d1 = j-start , d2 = en-j;
if((start!=1)&&lst>0&&(d1<d2||en==n+m))
{
lst--;
ans+=d1;
}
else if((start!=1)&&lst==0&&(d1<d2||en==n+m))
{
ans+=d1+1;
}
else
{
newlst++;
ans+=d2+1;
}
}
// cout << ans << " ";
start = i+1;
}
}
return ans;
}
//b rrrr bb r bb
//1 + 2 + 1 + 1 + 1 + 2
// cases
//not start! lst > 0 and (d1<d2 or end)
//else notstart! lst == 0 (d1+1<D2 or end)
//else newlst++;
//cases:
//d1<d2
//d1+1<d2
# | 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... |