-
-
Save tanzaku/4129ceb1fe78745cab9ab0f7e5ee9de9 to your computer and use it in GitHub Desktop.
AtCoder Grand Contest 018 - A - Getting Difference
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.OutputStream; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.io.PrintWriter; | |
import java.io.IOException; | |
import java.io.BufferedReader; | |
import java.io.Reader; | |
import java.io.InputStreamReader; | |
import java.io.InputStream; | |
/** | |
* Built using CHelper plug-in | |
* Actual solution is at the top | |
* | |
* @author tanzaku | |
*/ | |
public class Main { | |
public static void main(String[] args) { | |
InputStream inputStream = System.in; | |
OutputStream outputStream = System.out; | |
MyInput in = new MyInput(inputStream); | |
PrintWriter out = new PrintWriter(outputStream); | |
TaskA solver = new TaskA(); | |
solver.solve(1, in, out); | |
out.close(); | |
} | |
static class TaskA { | |
public void solve(int testNumber, MyInput in, PrintWriter out) { | |
int n = in.nextInt(); | |
int k = in.nextInt(); | |
int[] a = in.nextIntArray(n); | |
int g = 0; | |
for (int i = 0; i < n; i++) g = gcd(g, a[i]); | |
for (int i = 0; i < n; i++) { | |
if (k <= a[i] && (a[i] - k) % g == 0) { | |
out.println("POSSIBLE"); | |
return; | |
} | |
} | |
out.println("IMPOSSIBLE"); | |
} | |
static int gcd(int n, int r) { | |
return r == 0 ? n : gcd(r, n % r); | |
} | |
} | |
static class MyInput { | |
private final BufferedReader in; | |
private static int pos; | |
private static int readLen; | |
private static final char[] buffer = new char[1024 * 8]; | |
private static char[] str = new char[500 * 8 * 2]; | |
private static boolean[] isDigit = new boolean[256]; | |
private static boolean[] isSpace = new boolean[256]; | |
private static boolean[] isLineSep = new boolean[256]; | |
static { | |
for (int i = 0; i < 10; i++) { | |
isDigit['0' + i] = true; | |
} | |
isDigit['-'] = true; | |
isSpace[' '] = isSpace['\r'] = isSpace['\n'] = isSpace['\t'] = true; | |
isLineSep['\r'] = isLineSep['\n'] = true; | |
} | |
public MyInput(InputStream is) { | |
in = new BufferedReader(new InputStreamReader(is)); | |
} | |
public int read() { | |
if (pos >= readLen) { | |
pos = 0; | |
try { | |
readLen = in.read(buffer); | |
} catch (IOException e) { | |
throw new RuntimeException(); | |
} | |
if (readLen <= 0) { | |
throw new MyInput.EndOfFileRuntimeException(); | |
} | |
} | |
return buffer[pos++]; | |
} | |
public int nextInt() { | |
int len = 0; | |
str[len++] = nextChar(); | |
len = reads(len, isSpace); | |
int i = 0; | |
int ret = 0; | |
if (str[0] == '-') { | |
i = 1; | |
} | |
for (; i < len; i++) ret = ret * 10 + str[i] - '0'; | |
if (str[0] == '-') { | |
ret = -ret; | |
} | |
return ret; | |
} | |
public char nextChar() { | |
while (true) { | |
final int c = read(); | |
if (!isSpace[c]) { | |
return (char) c; | |
} | |
} | |
} | |
int reads(int len, boolean[] accept) { | |
try { | |
while (true) { | |
final int c = read(); | |
if (accept[c]) { | |
break; | |
} | |
if (str.length == len) { | |
char[] rep = new char[str.length * 3 / 2]; | |
System.arraycopy(str, 0, rep, 0, str.length); | |
str = rep; | |
} | |
str[len++] = (char) c; | |
} | |
} catch (MyInput.EndOfFileRuntimeException e) { | |
} | |
return len; | |
} | |
public int[] nextIntArray(final int n) { | |
final int[] res = new int[n]; | |
for (int i = 0; i < n; i++) { | |
res[i] = nextInt(); | |
} | |
return res; | |
} | |
static class EndOfFileRuntimeException extends RuntimeException { | |
} | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment