Submission #2458668
Source Code Expand
//#define NDEBUG
#define _CRT_SECURE_NO_WARNINGS
#include <array>
#include <cstddef>
#include <cstdint>
#include <cstdio>
#include <limits>
#include <memory>
#include <string>
#include <type_traits>
template <class Integral> class Rirange;
template <class Integral = std::size_t> class irange {
public:
using value_type = Integral;
using reference = value_type &;
using const_reference = const value_type &;
class irangeitr {
friend irange;
value_type i;
irangeitr(const value_type x) noexcept : i(x) {}
public:
void operator++() noexcept { ++i; }
value_type &operator*() noexcept { return i; }
const_reference operator*() const noexcept { return i; }
bool operator!=(const irangeitr &x) const noexcept { return i < x.i; }
};
private:
const value_type f, l;
public:
irange(const value_type first, const value_type last) noexcept
: f(first), l(last) {}
irangeitr begin() const noexcept { return irangeitr(f); }
irangeitr end() const noexcept { return irangeitr(l); }
Rirange<value_type> rev() const noexcept {
return Rirange<value_type>(l - 1, f - 1);
}
};
template <class Integral = std::size_t> class Rirange {
public:
using value_type = Integral;
using reference = value_type &;
using const_reference = const value_type &;
class Rirangeitr {
friend Rirange;
value_type i;
Rirangeitr(const value_type x) noexcept : i(x) {}
public:
void operator++() noexcept { --i; }
reference operator*() noexcept { return i; }
const_reference operator*() const noexcept { return i; }
bool operator!=(const Rirangeitr &x) const noexcept {
return (!~x.i && ~i) || x.i < i;
}
};
private:
const value_type f, l;
public:
Rirange(const value_type x, const value_type y) noexcept : f(x), l(y) {}
Rirangeitr begin() const noexcept { return Rirangeitr(f); }
Rirangeitr end() const noexcept { return Rirangeitr(l); }
irange<value_type> rev() const noexcept {
return irange<value_type>(l + 1, f + 1);
}
};
template <class T> bool maxi(T &a, const T &b) {
if (b < a)
return 0;
a = b;
return 1;
}
template <class T> bool mini(T &a, const T &b) {
if (a < b)
return 0;
a = b;
return 1;
}
template <class T> bool smaxi(T &a, const T &b) {
if (a < b) {
a = b;
return 1;
}
return 0;
}
template <class T> bool smini(T &a, const T &b) {
if (b < a) {
a = b;
return 1;
}
return 0;
}
struct customIO {
int c;
bool f;
std::array<int, 30> buf;
void get_c() { c = fgetc(stdin); }
void put_c(int x) { fputc(x, stdout); }
bool vacant() { return c == ' ' || c == '\n'; }
operator int() { return 0; }
// in
void cueing() {
while (get_c(), vacant())
;
}
template <class T>
auto operator>>(T &d) ->
typename std::enable_if<std::is_signed<T>::value, customIO &>::type {
d = 0;
f = 0;
cueing();
if (c == '-')
f = 1, get_c();
do
d = d * 10 + c - '0';
while (get_c(), !vacant());
if (f)
d = -d;
return *this;
}
template <class T>
auto operator>>(T &d) ->
typename std::enable_if<!std::is_signed<T>::value, customIO &>::type {
d = 0;
cueing();
do
d = d * 10 + c - '0';
while (get_c(), !vacant());
return *this;
}
customIO &operator>>(char &d) {
cueing();
d = c;
return *this;
}
customIO &operator>>(double &d) {
scanf("%lf", &d);
return *this;
}
customIO &operator>>(std::string &d) {
d.clear();
cueing();
do
d.push_back(c);
while (get_c(), !vacant());
return *this;
}
template <class T> T input() {
T d;
*this >> d;
return d;
}
// out
template <class T>
auto operator<<(T d) ->
typename std::enable_if<std::is_signed<T>::value, customIO &>::type {
c = 0;
f = 0;
if (d < static_cast<T>(0))
f = 1, d = -d;
while (d)
buf[c++] = d % 10 + '0', d /= 10;
if (!c)
buf[c++] = '0';
if (f)
put_c('-');
while (c--)
put_c(buf[c]);
return *this;
}
template <class T>
auto operator<<(T d) ->
typename std::enable_if<!std::is_signed<T>::value, customIO &>::type {
c = 0;
while (d)
buf[c++] = d % 10 + '0', d /= 10;
if (!c)
buf[c++] = '0';
while (c--)
put_c(buf[c]);
return *this;
}
customIO &operator<<(char d) {
put_c(d);
return *this;
}
customIO &operator<<(double d) {
/*
printf("%1.9f",d);
/*/
printf("%f", d);
//*/
return *this;
}
customIO &operator<<(const std::string &d) {
for (const auto e : d)
put_c(e);
return *this;
}
customIO &operator<<(const char *d) {
while (*d != '\0')
put_c(*(d++));
return *this;
}
void endl() { put_c('\n'); }
void space() { put_c(' '); }
} IO;
using int32 = std::int_fast32_t;
using int64 = std::int_fast64_t;
using uint32 = std::uint_fast32_t;
using uint64 = std::uint_fast64_t;
using intl32 = std::int_least32_t;
using intl64 = std::int_least64_t;
using uintl32 = std::uint_least32_t;
using uintl64 = std::uint_least64_t;
#include <algorithm>
#include <utility>
#include <vector>
int main() {
uint32 a, b;
IO >> a >> b;
if (a <= b) {
IO << a << '\n';
}
else {
IO << a - 1 << '\n';
}
return 0;
}
Submission Info
Submission Time |
|
Task |
A - Day of Takahashi |
User |
noshi91 |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
5227 Byte |
Status |
AC |
Exec Time |
1 ms |
Memory |
128 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
100 / 100 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample_01.txt, sample_02.txt, sample_03.txt |
All |
in01.txt, in02.txt, in03.txt, in04.txt, sample_01.txt, sample_02.txt, sample_03.txt |
Case Name |
Status |
Exec Time |
Memory |
in01.txt |
AC |
0 ms |
128 KB |
in02.txt |
AC |
0 ms |
128 KB |
in03.txt |
AC |
0 ms |
128 KB |
in04.txt |
AC |
1 ms |
128 KB |
sample_01.txt |
AC |
0 ms |
128 KB |
sample_02.txt |
AC |
0 ms |
128 KB |
sample_03.txt |
AC |
0 ms |
128 KB |