Submission #34752964
Source Code Expand
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cassert>
#include <iostream>
#include <sstream>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <utility>
#include <numeric>
#include <algorithm>
#include <bitset>
#include <complex>
#include <array>
#include <list>
#include <stack>
#include <valarray>
using namespace std;
typedef unsigned uint;
typedef long long Int;
typedef unsigned long long UInt;
const int INF = 1001001001;
const Int INFLL = 1001001001001001001LL;
template <typename T>
void pv(T a, T b)
{
for (T i = a; i != b; ++i)
cout << *i << " ";
cout << endl;
}
template <typename T>
void chmin(T &a, T b)
{
if (a > b)
a = b;
}
template <typename T>
void chmax(T &a, T b)
{
if (a < b)
a = b;
}
int in()
{
int x;
scanf("%d", &x);
return x;
}
double fin()
{
double x;
scanf("%lf", &x);
return x;
}
Int lin()
{
Int x;
scanf("%lld", &x);
return x;
}
int main()
{
int N;
cin >> N;
vector<int> P(N), A(N, 0);
Int am = 0;
Int res = INFLL;
for (int i = 0; i < N; ++i)
{
P[i] = in();
A[(i - P[i] + N) % N]++;
am += min((i - P[i] + N) % N, (P[i] - i + N) % N);
}
for (int i = 0; i < N; ++i)
{
A.push_back(A[i]);
}
for (int i = 0; i < N; ++i)
{
A.push_back(A[i]);
}
vector<int> S(A.size(), 0);
for (int i = 0; i < (int)A.size(); ++i)
{
S[i] = A[i];
if (i > 0)
S[i] += S[i - 1];
}
int len = N / 2;
int pos = 0, neg = (N + 1) / 2;
for (int i = 0; i < N; ++i)
{
chmin(res, am);
am += S[pos + len - 1] - (pos == 0 ? 0 : S[pos - 1]);
am -= S[neg + len - 1] - (neg == 0 ? 0 : S[neg - 1]);
pos = (pos - 1 + N) % N;
neg = (neg - 1 + N) % N;
}
cout << res << endl;
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | E - Chinese Restaurant (Three-Star Version) |
| User | japlj |
| Language | C++ (GCC 9.2.1) |
| Score | 500 |
| Code Size | 1890 Byte |
| Status | AC |
| Exec Time | 41 ms |
| Memory | 8692 KiB |
Compile Error
./Main.cpp: In function ‘int in()’:
./Main.cpp:53:8: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
53 | scanf("%d", &x);
| ~~~~~^~~~~~~~~~
./Main.cpp: In function ‘double fin()’:
./Main.cpp:59:8: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
59 | scanf("%lf", &x);
| ~~~~~^~~~~~~~~~~
./Main.cpp: In function ‘Int lin()’:
./Main.cpp:65:8: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
65 | scanf("%lld", &x);
| ~~~~~^~~~~~~~~~~~
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 500 / 500 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_smallN_00.txt, 01_smallN_01.txt, 01_smallN_02.txt, 01_smallN_03.txt, 01_smallN_04.txt, 01_smallN_05.txt, 01_smallN_06.txt, 01_smallN_07.txt, 02_rnd_00.txt, 02_rnd_01.txt, 02_rnd_02.txt, 02_rnd_03.txt, 02_rnd_04.txt, 02_rnd_05.txt, 03_inc_00.txt, 03_inc_01.txt, 03_inc_02.txt, 03_inc_03.txt, 03_inc_04.txt, 03_inc_05.txt, 03_inc_06.txt, 03_inc_07.txt, 04_dec_00.txt, 04_dec_01.txt, 04_dec_02.txt, 04_dec_03.txt, 04_dec_04.txt, 04_dec_05.txt, 04_dec_06.txt, 04_dec_07.txt, 05_adj_00.txt, 05_adj_01.txt, 05_adj_02.txt, 05_adj_03.txt, 05_adj_04.txt, 05_adj_05.txt, 05_adj_06.txt, 05_adj_07.txt, 06_corner_00.txt, 06_corner_01.txt, 06_corner_02.txt, 06_corner_03.txt, 06_corner_04.txt, 06_corner_05.txt, 06_corner_06.txt, 06_corner_07.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 15 ms | 3572 KiB |
| 00_sample_01.txt | AC | 3 ms | 3424 KiB |
| 00_sample_02.txt | AC | 3 ms | 3648 KiB |
| 01_smallN_00.txt | AC | 2 ms | 3644 KiB |
| 01_smallN_01.txt | AC | 2 ms | 3588 KiB |
| 01_smallN_02.txt | AC | 2 ms | 3588 KiB |
| 01_smallN_03.txt | AC | 2 ms | 3632 KiB |
| 01_smallN_04.txt | AC | 3 ms | 3420 KiB |
| 01_smallN_05.txt | AC | 2 ms | 3588 KiB |
| 01_smallN_06.txt | AC | 2 ms | 3424 KiB |
| 01_smallN_07.txt | AC | 2 ms | 3540 KiB |
| 02_rnd_00.txt | AC | 41 ms | 8544 KiB |
| 02_rnd_01.txt | AC | 40 ms | 8472 KiB |
| 02_rnd_02.txt | AC | 40 ms | 8544 KiB |
| 02_rnd_03.txt | AC | 38 ms | 8628 KiB |
| 02_rnd_04.txt | AC | 38 ms | 8688 KiB |
| 02_rnd_05.txt | AC | 40 ms | 8524 KiB |
| 03_inc_00.txt | AC | 38 ms | 8416 KiB |
| 03_inc_01.txt | AC | 37 ms | 8468 KiB |
| 03_inc_02.txt | AC | 37 ms | 8688 KiB |
| 03_inc_03.txt | AC | 36 ms | 8632 KiB |
| 03_inc_04.txt | AC | 36 ms | 8524 KiB |
| 03_inc_05.txt | AC | 38 ms | 8688 KiB |
| 03_inc_06.txt | AC | 37 ms | 8468 KiB |
| 03_inc_07.txt | AC | 36 ms | 8416 KiB |
| 04_dec_00.txt | AC | 40 ms | 8604 KiB |
| 04_dec_01.txt | AC | 37 ms | 8584 KiB |
| 04_dec_02.txt | AC | 40 ms | 8636 KiB |
| 04_dec_03.txt | AC | 39 ms | 8692 KiB |
| 04_dec_04.txt | AC | 37 ms | 8692 KiB |
| 04_dec_05.txt | AC | 37 ms | 8576 KiB |
| 04_dec_06.txt | AC | 34 ms | 8544 KiB |
| 04_dec_07.txt | AC | 37 ms | 8688 KiB |
| 05_adj_00.txt | AC | 38 ms | 8468 KiB |
| 05_adj_01.txt | AC | 37 ms | 8472 KiB |
| 05_adj_02.txt | AC | 35 ms | 8468 KiB |
| 05_adj_03.txt | AC | 34 ms | 8472 KiB |
| 05_adj_04.txt | AC | 36 ms | 8632 KiB |
| 05_adj_05.txt | AC | 40 ms | 8540 KiB |
| 05_adj_06.txt | AC | 37 ms | 8580 KiB |
| 05_adj_07.txt | AC | 37 ms | 8524 KiB |
| 06_corner_00.txt | AC | 37 ms | 8524 KiB |
| 06_corner_01.txt | AC | 36 ms | 8584 KiB |
| 06_corner_02.txt | AC | 37 ms | 8416 KiB |
| 06_corner_03.txt | AC | 38 ms | 8580 KiB |
| 06_corner_04.txt | AC | 37 ms | 8416 KiB |
| 06_corner_05.txt | AC | 36 ms | 8580 KiB |
| 06_corner_06.txt | AC | 37 ms | 8472 KiB |
| 06_corner_07.txt | AC | 37 ms | 8540 KiB |