POJ 3618 Exploration
ソースコード
int main() { int t, n; scanf("%d%d", &t, &n); set<int> pos; rep(i, n) { int x; scanf("%d", &x); pos.insert(x); } const int inf = ten(9) + 100; pos.insert(-inf); pos.insert(inf); int res = 0, p = 0; ll past = 0; for (;;) { set<int>::iterator it = pos.lower_bound(0); int right = *it; int left = *--it; int to = -left < right ? left : right; past += abs(to - p); p = to; pos.erase(to); if (past >= t) break; ++res; } printf("%d\n", res); }