Submission #65067981


Source Code Expand

import std.conv, std.functional, std.range, std.stdio, std.string;
import std.algorithm, std.array, std.bigint, std.bitmanip, std.complex, std.container, std.math, std.mathspecial, std.numeric, std.regex, std.typecons;
import core.bitop;

class EOFException : Throwable { this() { super("EOF"); } }
string[] tokens;
string readToken() { for (; tokens.empty; ) { if (stdin.eof) { throw new EOFException; } tokens = readln.split; } auto token = tokens.front; tokens.popFront; return token; }
int readInt() { return readToken.to!int; }
long readLong() { return readToken.to!long; }

string COLOR(string s = "") { return "\x1b[" ~ s ~ "m"; }

bool chmin(T)(ref T t, in T f) { if (t > f) { t = f; return true; } else { return false; } }
bool chmax(T)(ref T t, in T f) { if (t < f) { t = f; return true; } else { return false; } }

int binarySearch(alias pred, T)(in T[] as) { int lo = -1, hi = cast(int)(as.length); for (; lo + 1 < hi; ) { const mid = (lo + hi) >> 1; (unaryFun!pred(as[mid]) ? hi : lo) = mid; } return hi; }
int lowerBound(T)(in T[] as, T val) { return as.binarySearch!(a => (a >= val)); }
int upperBound(T)(in T[] as, T val) { return as.binarySearch!(a => (a > val)); }


enum INF = 10L^^18;

int[] brute(int N, long D, long[] T, long[] X) {
  bool check(int[] us) {
    const s = us[0];
    long t = 0 + X[s];
    chmax(t, T[s]);
    if (t > T[s] + D) return false;
    int u = s;
    foreach (v; us[1 .. N]) {
      t += X[u] + X[v];
      chmax(t, T[v]);
      if (t > T[v] + D) return false;
      u = v;
    }
    return true;
  }
  auto us = iota(N).array;
  do {
    if (check(us)) return us;
  } while (us.nextPermutation);
  return null;
}

bool solve0(int N, long D, long[] T, long[] X) {
  bool check(int s) {
    long t = 0 + X[s];
    chmax(t, T[s]);
    if (t > T[s] + D) return false;
    int u = s;
    foreach (v; 0 .. N) if (s != v) {
      t += X[u] + X[v];
      chmax(t, T[v]);
      if (t > T[v] + D) return false;
      u = v;
    }
    return true;
  }
  foreach (s; 0 .. N) if (check(s)) return true;
  return false;
}

bool solve1(int N, long D, long[] T, long[] X) {
  bool check(int s) {
    long t = T[s] + D;
    if (t - X[s] < 0) return false;
    int u = s;
    foreach_reverse (v; 0 .. N) if (s != v) {
      t -= X[u] + X[v];
      chmin(t, T[v] + D);
      if (t < T[v]) return false;
      if (t - X[v] < 0) return false;
      u = v;
    }
    return true;
  }
  foreach (s; 0 .. N) if (check(s)) return true;
  return false;
}

bool solve2(int N, long D, long[] T, long[] X) {
  auto dp = new long[N + 1];
  dp[] = INF;
  dp[0] = 0;
  foreach (i; 0 .. N) if (dp[i] < INF) {
    {
      long t = dp[i] + X[i];
      chmax(t, T[i]);
      if (t <= T[i] + D) {
        t += X[i];
        chmin(dp[i + 1], t);
      }
    }
    long minT = +INF;
    long maxT = -INF;
    long sumX;
    long[2] xs = [-INF, -INF];
    foreach (j; i .. N) {
      chmin(minT, T[j]);
      chmax(maxT, T[j]);
      sumX += X[j];
      {
        long x = X[j];
        foreach (k; 0 .. 2) if (xs[k] < x) swap(xs[k], x);
      }
      if (i < j) {
        foreach (k; 0 .. 2) {
          long t = dp[i] + xs[k];
          chmax(t, maxT);
          t += (2 * sumX - xs[0] - xs[1]);
          if (t <= minT + D) {
            t += xs[k ^ 1];
            debug writefln("%s -> %s: %s %s %s %s; %s -> %s", i, j + 1, minT, maxT, sumX, xs, dp[i], t);
            chmin(dp[j + 1], t);
          }
        }
      }
    }
  }
  return (dp[N] < INF);
}

void main() {
  try {
    for (; ; ) {
      const numCases = readInt;
      foreach (caseId; 0 .. numCases) {
        const N = readInt;
        const D = readLong;
        auto T = new long[N];
        auto X = new long[N];
        foreach (u; 0 .. N) {
          T[u] = readLong;
          X[u] = readLong;
        }
        
        const ans = solve0(N, D, T, X) || solve1(N, D, T, X) || solve2(N, D, T, X);
        writeln(ans ? "Yes" : "No");
        debug {
          const brt = brute(N, D, T, X);
          assert(brt ? ans : !ans, format("%s %s %s %s: %s %s", N, D, T, X, brt, ans));
        }
      }
    }
  } catch (EOFException e) {
  }
}

Submission Info

Submission Time
Task A - Rhythm Game
User hos_lyric
Language D (LDC 1.32.2)
Score 0
Code Size 4272 Byte
Status WA
Exec Time 101 ms
Memory 8220 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 900
Status
AC × 1
AC × 84
WA × 26
Set Name Test Cases
Sample sample-01.txt
All 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 03-06.txt, 03-07.txt, 03-08.txt, 03-09.txt, 03-10.txt, 03-11.txt, 03-12.txt, 03-13.txt, 03-14.txt, 03-15.txt, 03-16.txt, 03-17.txt, 03-18.txt, 03-19.txt, 03-20.txt, 04-01.txt, 04-02.txt, 04-03.txt, 04-04.txt, 04-05.txt, 05-01.txt, 05-02.txt, 05-03.txt, 05-04.txt, 05-05.txt, 05-06.txt, 06-01.txt, 06-02.txt, 06-03.txt, 06-04.txt, 06-05.txt, 06-06.txt, 06-07.txt, 06-08.txt, 06-09.txt, 07-01.txt, 07-02.txt, 07-03.txt, 07-04.txt, 07-05.txt, 07-06.txt, 08-01.txt, 08-02.txt, 08-03.txt, 08-04.txt, 08-05.txt, 08-06.txt, 08-07.txt, 08-08.txt, 08-09.txt, 08-10.txt, 08-11.txt, 08-12.txt, 08-13.txt, 08-14.txt, 08-15.txt, 08-16.txt, 08-17.txt, 08-18.txt, 09-01.txt, 09-02.txt, 09-03.txt, 09-04.txt, 09-05.txt, 09-06.txt, 09-07.txt, 09-08.txt, 09-09.txt, 09-10.txt, 09-11.txt, 09-12.txt, 09-13.txt, sample-01.txt
Case Name Status Exec Time Memory
01-01.txt AC 81 ms 8036 KiB
01-02.txt AC 59 ms 8220 KiB
01-03.txt AC 50 ms 8076 KiB
01-04.txt WA 44 ms 3804 KiB
01-05.txt WA 41 ms 3836 KiB
01-06.txt WA 40 ms 3780 KiB
01-07.txt WA 39 ms 3784 KiB
01-08.txt WA 37 ms 3864 KiB
01-09.txt WA 37 ms 3924 KiB
01-10.txt WA 38 ms 3868 KiB
01-11.txt WA 45 ms 3928 KiB
01-12.txt WA 55 ms 4268 KiB
01-13.txt AC 55 ms 4240 KiB
01-14.txt AC 41 ms 4212 KiB
01-15.txt AC 33 ms 4424 KiB
01-16.txt AC 32 ms 4192 KiB
01-17.txt AC 36 ms 4160 KiB
01-18.txt AC 35 ms 4148 KiB
01-19.txt AC 35 ms 3956 KiB
01-20.txt AC 46 ms 3960 KiB
01-21.txt AC 46 ms 4148 KiB
01-22.txt AC 68 ms 3976 KiB
02-01.txt WA 36 ms 3776 KiB
02-02.txt WA 43 ms 3916 KiB
02-03.txt WA 56 ms 4284 KiB
02-04.txt WA 37 ms 4204 KiB
02-05.txt WA 64 ms 3780 KiB
02-06.txt WA 33 ms 4064 KiB
02-07.txt AC 69 ms 3872 KiB
02-08.txt WA 12 ms 4048 KiB
02-09.txt AC 36 ms 4032 KiB
02-10.txt WA 30 ms 4068 KiB
03-01.txt AC 38 ms 3928 KiB
03-02.txt AC 57 ms 4000 KiB
03-03.txt AC 99 ms 4328 KiB
03-04.txt AC 73 ms 4216 KiB
03-05.txt AC 50 ms 3868 KiB
03-06.txt AC 101 ms 4044 KiB
03-07.txt AC 58 ms 3752 KiB
03-08.txt AC 101 ms 3964 KiB
03-09.txt AC 33 ms 3772 KiB
03-10.txt AC 32 ms 3868 KiB
03-11.txt AC 28 ms 4176 KiB
03-12.txt AC 16 ms 4208 KiB
03-13.txt AC 25 ms 4016 KiB
03-14.txt AC 2 ms 4044 KiB
03-15.txt AC 41 ms 4076 KiB
03-16.txt AC 37 ms 3844 KiB
03-17.txt AC 52 ms 4288 KiB
03-18.txt AC 28 ms 4296 KiB
03-19.txt AC 101 ms 4060 KiB
03-20.txt AC 2 ms 3960 KiB
04-01.txt AC 2 ms 3988 KiB
04-02.txt AC 35 ms 4124 KiB
04-03.txt WA 6 ms 3888 KiB
04-04.txt WA 3 ms 3992 KiB
04-05.txt WA 5 ms 4116 KiB
05-01.txt AC 46 ms 4192 KiB
05-02.txt AC 41 ms 4148 KiB
05-03.txt AC 40 ms 4428 KiB
05-04.txt AC 46 ms 4156 KiB
05-05.txt AC 18 ms 4160 KiB
05-06.txt AC 9 ms 3884 KiB
06-01.txt WA 33 ms 3804 KiB
06-02.txt WA 31 ms 3940 KiB
06-03.txt WA 25 ms 4180 KiB
06-04.txt WA 9 ms 4384 KiB
06-05.txt AC 4 ms 4292 KiB
06-06.txt AC 4 ms 4176 KiB
06-07.txt AC 20 ms 4384 KiB
06-08.txt WA 6 ms 4264 KiB
06-09.txt WA 6 ms 4200 KiB
07-01.txt AC 1 ms 3208 KiB
07-02.txt AC 16 ms 3908 KiB
07-03.txt AC 1 ms 3096 KiB
07-04.txt AC 84 ms 8040 KiB
07-05.txt AC 60 ms 3812 KiB
07-06.txt AC 3 ms 4048 KiB
08-01.txt AC 2 ms 3976 KiB
08-02.txt AC 2 ms 4080 KiB
08-03.txt AC 2 ms 3832 KiB
08-04.txt AC 2 ms 3840 KiB
08-05.txt AC 2 ms 4076 KiB
08-06.txt AC 2 ms 4048 KiB
08-07.txt AC 2 ms 4156 KiB
08-08.txt AC 2 ms 4032 KiB
08-09.txt AC 2 ms 4028 KiB
08-10.txt AC 2 ms 4024 KiB
08-11.txt AC 2 ms 4004 KiB
08-12.txt AC 2 ms 4060 KiB
08-13.txt AC 2 ms 4024 KiB
08-14.txt AC 2 ms 4152 KiB
08-15.txt AC 35 ms 3824 KiB
08-16.txt AC 35 ms 4032 KiB
08-17.txt AC 2 ms 3988 KiB
08-18.txt AC 2 ms 3868 KiB
09-01.txt AC 32 ms 3780 KiB
09-02.txt AC 32 ms 3956 KiB
09-03.txt AC 32 ms 3772 KiB
09-04.txt AC 32 ms 3912 KiB
09-05.txt AC 17 ms 3920 KiB
09-06.txt AC 18 ms 3944 KiB
09-07.txt AC 17 ms 3840 KiB
09-08.txt AC 32 ms 3868 KiB
09-09.txt AC 2 ms 3904 KiB
09-10.txt AC 3 ms 4008 KiB
09-11.txt AC 2 ms 3956 KiB
09-12.txt AC 33 ms 4112 KiB
09-13.txt AC 2 ms 3880 KiB
sample-01.txt AC 1 ms 3212 KiB