Please sign in first.
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 |
|
|
| 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 |