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
AC × 3
AC × 49
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