# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
222867 | MrDomino | Arranging Shoes (IOI19_shoes) | C++14 | 1043 ms | 5268 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "shoes.h"
using namespace std;
typedef long long ll;
ll get_dist(vector<int> ord)
{
ll sol = 0;
for (int i = 0; i < (int) ord.size(); i++)
{
sol += abs(ord[i] - i);
}
return sol / 2;
}
const int N = (int) 1e5 + 7;
int pl[N];
int mn[N];
long long count_swaps(vector<int> a)
{
int n = (int) a.size() / 2;
bool sim_sub = 1;
for (int i = 0; i < n; i++)
{
sim_sub &= (a[i] < 0 && a[i + n] > 0 && a[i] == -a[i + n]);
}
if (sim_sub)
{
vector<int> ord;
for (int i = 0; i < n; i++)
{
ord.push_back(i);
ord.push_back(i + n);
}
return get_dist(ord);
}
bool same_sub = 1;
for (int i = 1; i < 2 * n; i++)
{
same_sub &= (abs(a[i]) == abs(a[0]));
}
if (same_sub)
{
vector<int> mn, pl;
for (int i = 0; i < 2 * n; i++)
{
if (a[i] < 0)
{
mn.push_back(i);
}
else
{
pl.push_back(i);
}
}
vector<int> ord;
for (int i = 0; i < n; i++)
{
ord.push_back(mn[i]);
ord.push_back(pl[i]);
}
return get_dist(ord);
}
ll sol = 0;
for (int i = 0; i < n; i++)
{
int pos = 2 * i;
for (int j = 1; j <= n; j++)
{
pl[j] = mn[j] = (int) 1e9;
}
for (int j = pos; j < 2 * n; j++)
{
if (a[j] < 0)
{
mn[-a[j]] = min(mn[-a[j]], j);
}
if (a[j] > 0)
{
pl[a[j]] = min(pl[a[j]], j);
}
}
int smin = (int) 1e9;
for (int j = 1; j <= n; j++)
{
smin = min(smin, pl[j] + mn[j]);
}
int init = sol;
for (int j = 1; j <= n; j++)
{
if (pl[j] + mn[j] == smin)
{
int val = mn[j];
while (val > pos)
{
swap(a[val], a[val - 1]);
val--;
sol++;
}
pos++;
if (a[pl[j]] != j)
{
pl[j]++;
}
val = pl[j];
while (val > pos)
{
swap(a[val], a[val - 1]);
val--;
sol++;
}
break;
}
}
}
return sol;
}
컴파일 시 표준 에러 (stderr) 메시지
# | 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... |