結果

問題 No.1205 Eye Drops
コンテスト
ユーザー CuriousFairy315
提出日時 2020-08-30 13:05:57
言語 Java
(openjdk 23)
結果
AC  
実行時間 164 ms / 2,000 ms
コード長 8,269 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,598 ms
コンパイル使用メモリ 86,104 KB
実行使用メモリ 51,100 KB
最終ジャッジ日時 2024-11-23 20:38:23
合計ジャッジ時間 6,542 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 37
権限があれば一括ダウンロードができます

ソースコード

raw source code

 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.BitSet; import java.util.NoSuchElementException; public class Main {	public static void main(String[] args) {	new Main();	}	public Main() {	InputChecker ic = new InputChecker(System.in);	java.io.PrintWriter out = new java.io.PrintWriter(System.out);	solve(ic, out);	out.flush();	}	public void solve(InputChecker ic, java.io.PrintWriter out) {	int N = ic.nextInt(1, exponent10(1, 5));	ic.nextChar(' ');	int M = ic.nextInt(1, exponent10(1, 5));	ic.readNewLine();	int p = 0;	long t = 0;	boolean yes = true;	for (int i = 0;i < M;++ i) {	long T = ic.nextLong(t, exponent10L(1, 10));	ic.nextChar(' ');	int P = ic.nextInt(0, N - 1);	yes &= Math.abs(P - p) <= T - t;	t = T;	p = P;	ic.readNewLine();	}	ic.checkEOF();	out.println(yes ? "Yes" : "No");	}	public static int exponent10(int n, int e) {	return n * pow(10, e);	}	public static long exponent10L(int n, int e) {	return n * pow(10L, e);	}	public static int pow(int a, int b) {	int ans = 1;	for (int mul = a;b > 0;b >>= 1, mul *= mul) if ((b & 1) != 0) ans *= mul;	return ans;	}	public static long pow(long a, long b) {	long ans = 1;	for (long mul = a;b > 0;b >>= 1, mul *= mul) if ((b & 1) != 0) ans *= mul;	return ans;	}	public static class CharSet {	private final BitSet set = new BitSet(256);	public void add(char... c) {	for (char i : c) set.set(i);	}	public void add(CharSet... s) {	for (CharSet i : s) set.or(i.set);	}	public boolean contains(char... c) {	for (char i : c) if (!set.get(i)) return false;	return true;	}	public boolean contains(String s) {	return contains(s.toCharArray());	}	private static final class Chars extends CharSet {	public Chars(char... c) {	super.add(c);	}	public Chars(CharSet... s) {	super.add(s);	}	@Override	public void add(char... c) {	throw new UnsupportedOperationException();	}	@Override	public void add(CharSet... s) {	throw new UnsupportedOperationException();	}	}	public static final CharSet NUMBER = new Chars('0','1','2','3','4','5','6','7','8','9');	public static final CharSet LOWER = new Chars('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');	public static final CharSet UPPER = new Chars('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');	public static final CharSet ALPHABET = new Chars(LOWER, UPPER);	}	public static class InputChecker {	private InputStream in;	private final byte[] buffer = new byte[1024];	private final byte[] undo = new byte[1024];	private int undoSize = 0;	private int read = 0;	private int length = 0;	public InputChecker(InputStream in) {	this.in = in;	}	public final void setInputStream(InputStream in) {	this.in = in;	}	public final void setInputStream(File in) {	try {	this.in = new FileInputStream(in);	} catch (FileNotFoundException e) {	e.printStackTrace();	}	}	private boolean hasNextByte() {	if (undoSize > 0) return true;	if (read < length) return true;	read = 0;	try {	length = in.read(buffer);	} catch (IOException e) {	e.printStackTrace();	}	return length > 0;	}	private byte readByte() {	if (hasNextByte()) return undoSize > 0 ? undo[--undoSize] : buffer[read++];	throw new NoSuchElementException();	}	private void undo(byte b) {	undo[undoSize ++] = b;	}	private void undo(char c) {	if ((c & 0xFF80) == 0) {	undo((byte)c);	return;	}	undo((byte)(c & 0x3F | 0x80));	if ((c & 0xF800) == 0) {	undo((byte)(c >> 6 & 0x1F | 0xC0));	} else {	undo((byte)(c >> 6 & 0x3F | 0x80));	undo((byte)(c >> 12 | 0xE0));	}	}	public final boolean hasNext() {	return hasNextByte();	}	public final char nextChar() {	byte b = readByte();	if ((b & 0x80) == 0) return (char)b;	if ((b & 0x20) == 0) return (char)((b & 0x1F) << 6 | (readByte() & 0x3F));	return (char)((b & 0xF) << 12 | (readByte() & 0x3F) << 6 | (readByte() & 0x3F));	}	public final char nextChar(char estimate) {	char c = nextChar();	if (estimate == c) return estimate;	undo(c);	throw new AssertionError();	}	public final char nextChar(CharSet estimate) {	char c = nextChar();	if (estimate.contains(c)) return c;	undo(c);	throw new AssertionError();	}	public final void readNewLine() {	char c = nextChar();	if (c == '\r') {	c = nextChar();	if (c != '\n') undo(c);	return;	} else if (c == '\n') return;	undo(c);	throw new AssertionError();	}	public final void checkEOF() {	if (hasNextByte()) throw new AssertionError();	}	public final String next(CharSet contains) {	StringBuilder sb = new StringBuilder();	try {	do {	char c = nextChar();	if (!contains.contains(c)) {	undo(c);	return sb.toString();	}	sb.append(c);	} while(true);	} catch (NoSuchElementException e) {	if (sb.length() <= 0) throw new AssertionError();	return sb.toString();	}	}	public final int nextInt() {	byte b = readByte();	int n = 0;	if (b == '-') {	if (!isNumber(b = readByte())) {	undo(b);	throw new NumberFormatException();	}	try {	if (b == '0') {	if (!isNumber(b = readByte())) {	undo(b);	return 0;	}	throw new NumberFormatException();	}	do n = Math.addExact(Math.multiplyExact(n, 10), '0' - b); while(isNumber(b = readByte()));	undo(b);	} catch (NoSuchElementException e) {	}	return n;	}	if (!isNumber(b)) {	undo(b);	throw new NumberFormatException();	}	try {	if (b == '0') {	if (!isNumber(b = readByte())) {	undo(b);	return 0;	}	throw new NumberFormatException();	}	do n = Math.addExact(Math.multiplyExact(n, 10), b - '0'); while(isNumber(b = readByte()));	undo(b);	} catch (NoSuchElementException e) {	}	return n;	}	public final int nextInt(int min, int max) {	int n = nextInt();	if (min <= n && n <= max) return n;	throw new NumberFormatException();	}	private static boolean isNumber(byte c) {	return '0' <= c && c <= '9';	}	public final long nextLong() {	byte b = readByte();	long n = 0;	if (b == '-') {	if (!isNumber(b = readByte())) {	undo(b);	throw new NumberFormatException();	}	try {	if (b == '0') {	if (!isNumber(b = readByte())) {	undo(b);	return 0;	}	throw new NumberFormatException();	}	do n = Math.addExact(Math.multiplyExact(n, 10), '0' - b); while(isNumber(b = readByte()));	undo(b);	} catch (NoSuchElementException e) {	}	return n;	}	if (!isNumber(b)) {	undo(b);	throw new NumberFormatException();	}	try {	if (b == '0') {	if (!isNumber(b = readByte())) {	undo(b);	return 0;	}	throw new NumberFormatException();	}	do n = Math.addExact(Math.multiplyExact(n, 10), b - '0'); while(isNumber(b = readByte()));	undo(b);	} catch (NoSuchElementException e) {	}	return n;	}	public final long nextLong(long min, long max) {	long n = nextLong();	if (min <= n && n <= max) return n;	throw new NumberFormatException();	}	public final double nextDouble() {	StringBuilder sb = new StringBuilder();	byte b = readByte();	if (b == '-') {	sb.append(b);	b = readByte();	}	if (b == '0') {	sb.append(b);	b = readByte();	} else {	while(isNumber(b)) {	sb.append(b);	b = readByte();	}	}	if (b == '.') {	sb.append(b);	b = readByte();	while(isNumber(b)) {	sb.append(b);	b = readByte();	}	}	if (b == 'e' || b == 'E') {	sb.append(b);	b = readByte();	if (b == '-' || b == '+') {	sb.append(b);	b = readByte();	}	while(isNumber(b)) {	sb.append(b);	b = readByte();	}	}	undo(b);	return Double.parseDouble(sb.toString());	}	} } 
0