Submission #1873484


Source Code Expand

#include<bits/stdc++.h>
#define int long long
#define out(x) cerr << #x << " = " << x << "\n"
using namespace std;
// by piano
template<typename tp> inline void read(tp &x) {
  x = 0;char c = getchar();bool f = 0;
  for(; c < '0' || c > '9'; f |= (c == '-'), c = getchar());
  for(; c >= '0' && c <= '9'; x = (x << 3) + (x << 1) + c - '0', c = getchar());
  if(f) x = -x;
}
#define c(a, b) memset(a, b, sizeof(a))
const int N = 6e5 + 233;
int inf;
int n, Q, x, y, a[N], ans, tag, res[N];
#define root 1, n, 1
struct T {
#define ls (rt << 1)
#define rs (rt << 1 | 1)
#define mid ((l) + (((r) - (l)) >> 1))
  int tr[N << 2], tag[N << 2];
  inline void init() {
    memset(tr, 38, sizeof(tr));
    inf = tr[0] + 233;
    memset(tag, 0, sizeof(tag));
  }
  inline void pd(int rt, int l, int r) {
    if(tag[rt]) {
      tr[ls] += tag[rt];
      tr[rs] += tag[rt];
      tag[ls] += tag[rt];
      tag[rs] += tag[rt];
      tag[rt] = 0;
    }
  }
	
  inline void A(int L, int R, int C, int l, int r, int rt) {
    if(L <= l && r <= R) {
      tr[rt] += C * (r - l + 1);
      tag[rt] += C;
      return ;
    }pd(rt, l, r);
    if(L <= mid) A(L, R, C, l, mid, ls);
    if(R > mid) A(L, R, C, mid + 1, r, rs);
    tr[rt] = min(tr[ls], tr[rs]);
  }
  inline void in(int L, int C, int l, int r, int rt) {
    int num = q(L, L, root);
    A(L, L, C - num, root);
  }
  inline int q(int L, int R, int l, int r, int rt) {
    if(L <= l && r <= R) return tr[rt];
    pd(rt, l, r);
    int ans = inf;
    if(L <= mid) ans = min(ans, q(L, R, l, mid, ls));
    if(R > mid) ans = min(ans, q(L, R, mid + 1, r, rs));
    return ans;
  }
}tr1, tr2;

inline void add2(int pos, int now) {
  now += (n - (pos - 1));
  tr2.in(pos, now, root);
} 

inline void add1(int pos, int now) {
  now += pos; 
  tr1.in(pos, now, root);
}

inline void solve(int pos, int pre) {
  int l = tr2.q(1, pos, root), r = tr1.q(pos, n, root);
  l -= (n - (pos - 1)); r -= pos;
  int now = min(l, r);
  tr1.A(1, n, abs(pos - pre), root);
  tr2.A(1, n, abs(pos - pre), root);
  add1(pre, now);
  add2(pre, now);
}

main() {
  // freopen("1.in", "r", stdin);
  // freopen("30.out", "w", stdout);
  read(n); read(Q); read(x); read(y);
  tr1.init(); tr2.init();
  add1(y, 0); add2(y, 0);
  a[0] = x;
  for(int i = 1; i <= Q; i ++) read(a[i]);
  for(int i = 1; i <= Q; i ++) solve(a[i], a[i - 1]);
  ans = inf;
  for(int i = 1; i <= n; i ++) {
    res[i] = tr1.q(i, i, root) - i;
    ans = min(ans, res[i]);
  }
  cout << ans  << "\n";
}

Submission Info

Submission Time
Task F - Many Moves
User foreverpiano
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2583 Byte
Status WA
Exec Time 275 ms
Memory 82176 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 900
Status
AC × 4
AC × 14
WA × 20
Set Name Test Cases
Sample example0, example1, example2, example3
All example0, example1, example2, example3, flower0, flower1, flower2, flower3, flower4, flower5, flower6, flower7, flower8, flower9, maxrand0, maxrand1, maxrand2, maxrand3, maxrand4, maxrand5, maxrand6, maxrand7, maxrand8, maxrand9, smallrand0, smallrand1, smallrand2, smallrand3, smallrand4, smallrand5, smallrand6, smallrand7, smallrand8, smallrand9
Case Name Status Exec Time Memory
example0 AC 21 ms 78080 KB
example1 AC 21 ms 78080 KB
example2 AC 21 ms 78080 KB
example3 AC 21 ms 78080 KB
flower0 WA 262 ms 82176 KB
flower1 WA 258 ms 82176 KB
flower2 WA 261 ms 82176 KB
flower3 WA 259 ms 82176 KB
flower4 WA 261 ms 82176 KB
flower5 WA 258 ms 82176 KB
flower6 WA 262 ms 82176 KB
flower7 WA 260 ms 82176 KB
flower8 WA 258 ms 82176 KB
flower9 WA 259 ms 82176 KB
maxrand0 WA 275 ms 82176 KB
maxrand1 WA 269 ms 82176 KB
maxrand2 WA 274 ms 82176 KB
maxrand3 WA 271 ms 82176 KB
maxrand4 WA 272 ms 82176 KB
maxrand5 WA 271 ms 82176 KB
maxrand6 WA 271 ms 82176 KB
maxrand7 WA 269 ms 82176 KB
maxrand8 WA 273 ms 82176 KB
maxrand9 WA 273 ms 82176 KB
smallrand0 AC 21 ms 78080 KB
smallrand1 AC 21 ms 78080 KB
smallrand2 AC 21 ms 78080 KB
smallrand3 AC 21 ms 78080 KB
smallrand4 AC 21 ms 78080 KB
smallrand5 AC 21 ms 78080 KB
smallrand6 AC 21 ms 78080 KB
smallrand7 AC 21 ms 78080 KB
smallrand8 AC 21 ms 78080 KB
smallrand9 AC 21 ms 78080 KB