Submission #1873478


Source Code Expand

#include<bits/stdc++.h>
#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 = 3e5 + 233, inf = 1e9 + 233;
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));
    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 2543 Byte
Status WA
Exec Time 252 ms
Memory 21120 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 7 ms 20736 KB
example1 AC 7 ms 20736 KB
example2 AC 7 ms 20736 KB
example3 AC 7 ms 20736 KB
flower0 WA 238 ms 20992 KB
flower1 WA 237 ms 20992 KB
flower2 WA 237 ms 20992 KB
flower3 WA 238 ms 20992 KB
flower4 WA 237 ms 20992 KB
flower5 WA 237 ms 20992 KB
flower6 WA 236 ms 21120 KB
flower7 WA 237 ms 20992 KB
flower8 WA 237 ms 20992 KB
flower9 WA 237 ms 20992 KB
maxrand0 WA 248 ms 20992 KB
maxrand1 WA 247 ms 20992 KB
maxrand2 WA 252 ms 20992 KB
maxrand3 WA 252 ms 20992 KB
maxrand4 WA 247 ms 20992 KB
maxrand5 WA 246 ms 20992 KB
maxrand6 WA 247 ms 20992 KB
maxrand7 WA 247 ms 20992 KB
maxrand8 WA 246 ms 20992 KB
maxrand9 WA 246 ms 20992 KB
smallrand0 AC 7 ms 20736 KB
smallrand1 AC 7 ms 20736 KB
smallrand2 AC 7 ms 20736 KB
smallrand3 AC 7 ms 20736 KB
smallrand4 AC 7 ms 20736 KB
smallrand5 AC 7 ms 20736 KB
smallrand6 AC 7 ms 20736 KB
smallrand7 AC 7 ms 20736 KB
smallrand8 AC 7 ms 20736 KB
smallrand9 AC 7 ms 20736 KB