Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.IOException;
- import java.io.OutputStreamWriter;
- import java.util.Arrays;
- import java.io.BufferedWriter;
- import java.util.InputMismatchException;
- import java.io.FileOutputStream;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import java.io.FileInputStream;
- import java.io.Writer;
- import java.io.InputStream;
- /**
- * Built using CHelper plug-in
- * Actual solution is at the top
- * @author ilyakor
- */
- public class Main {
- public static void main(String[] args) {
- InputStream inputStream;
- try {
- inputStream = new FileInputStream("taxi.in");
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- OutputStream outputStream;
- try {
- outputStream = new FileOutputStream("taxi.out");
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- InputReader in = new InputReader(inputStream);
- OutputWriter out = new OutputWriter(outputStream);
- taxi solver = new taxi();
- solver.solve(1, in, out);
- out.close();
- }
- }
- class taxi {
- public void solve(int testNumber, InputReader in, OutputWriter out) {
- long m = in.nextLong();
- long d = in.nextLong();
- int n = in.nextInt();
- long[] a = new long[n];
- int opti = -1;
- for (int i = 0; i < n; ++i) {
- a[i] = in.nextLong();
- if (a[i] >= m - d) {
- if (opti == -1 || a[i] < a[opti])
- opti = i;
- }
- }
- if (opti == -1) {
- out.printLine(0);
- return;
- }
- long L = a[opti];
- a[opti] = -1;
- Arrays.sort(a);
- long pos = 0;
- int res = 0;
- for (int i = a.length - 1; i >= 0; --i) {
- if (L >= Math.abs(m - pos) + Math.abs(d - pos)) {
- ++res;
- pos = m;
- break;
- }
- long x = a[i];
- long d1 = Math.abs(d - pos);
- if (d1 > x) continue;
- x -= d1;
- ++res;
- pos += x;
- if (pos >= d) break;
- }
- if (pos < m) {
- long x = L;
- long d1 = Math.abs(d - pos);
- if (d1 <= x) {
- x -= d1;
- ++res;
- pos += x;
- }
- }
- if (pos < m) res = 0;
- out.printLine(res);
- }
- }
- class InputReader {
- private InputStream stream;
- private byte[] buffer = new byte[10000];
- private int cur;
- private int count;
- public InputReader(InputStream stream) {
- this.stream = stream;
- }
- public static boolean isSpace(int c) {
- return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
- }
- public int read() {
- if (count == -1) {
- throw new InputMismatchException();
- }
- try {
- if (cur >= count) {
- cur = 0;
- count = stream.read(buffer);
- if (count <= 0)
- return -1;
- }
- } catch (IOException e) {
- throw new InputMismatchException();
- }
- return buffer[cur++];
- }
- public int readSkipSpace() {
- int c;
- do {
- c = read();
- } while (isSpace(c));
- return c;
- }
- public int nextInt() {
- int sgn = 1;
- int c = readSkipSpace();
- if (c == '-') {
- sgn = -1;
- c = read();
- }
- int res = 0;
- do {
- if (c < '0' || c > '9') {
- throw new InputMismatchException();
- }
- res = res * 10 + c - '0';
- c = read();
- } while (!isSpace(c));
- res *= sgn;
- return res;
- }
- public long nextLong() {
- long sgn = 1;
- int c = readSkipSpace();
- if (c == '-') {
- sgn = -1;
- c = read();
- }
- long res = 0;
- do {
- if (c < '0' || c > '9') {
- throw new InputMismatchException();
- }
- res = res * 10L + (long)(c - '0');
- c = read();
- } while (!isSpace(c));
- res *= sgn;
- return res;
- }
- }
- class OutputWriter {
- private final PrintWriter writer;
- public OutputWriter(OutputStream outputStream) {
- writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream)));
- }
- public OutputWriter(Writer writer) {
- this.writer = new PrintWriter(writer);
- }
- public void print(Object... objects) {
- for (int i = 0; i < objects.length; i++) {
- if (i != 0) {
- writer.print(' ');
- }
- writer.print(objects[i]);
- }
- }
- public void printLine(Object... objects) {
- print(objects);
- writer.println();
- }
- public void close() {
- writer.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement