Submission #69841367


Source Code Expand

#include <bits/stdc++.h>

// =============================================================================
// 入力
// =============================================================================

// 可変長汎用入力関数
void in_impl () {}

template <typename T, typename... TS>
void in_impl (T& head, TS&... tail) {
    std::cin >> head;
    in_impl(tail ...);
}

// 可変長汎用入力マクロ
#define IN(T, ...) T __VA_ARGS__; in_impl(__VA_ARGS__)

// pair<T1,T2>の入力
template <typename T1, typename T2>
std::istream& operator>> (std::istream& is, std::pair<T1, T2>& p) {
    is >> p.first >> p.second;
    return is;
}

// vector<T>の入力
template <typename T>
std::istream& operator>> (std::istream& is, std::vector<T>& v) {
    for (auto&& vi : v) is >> vi;
    return is;
}


// =============================================================================
// 出力
// =============================================================================

// pair<T1,T2>の出力
template <typename T1, typename T2>
std::ostream& operator<< (std::ostream& os, const std::pair<T1, T2>& p) {
    os << p.first << ' ' << p.second;
    return os;
}

// vector<T>の出力
template <typename T>
std::ostream& operator<< (std::ostream& os, const std::vector<T>& v) {
    for (int i = 0, s = v.size(); i < s; ++i) {
        if (i) os << ' ';
        os << v[i];
    }
    return os;
}

// set<T>の出力
template <typename T>
std::ostream& operator<< (std::ostream& os, const std::set<T>& st) {
    auto itr = st.begin();
    int n = st.size();
    for (int i = 0; i < n; ++i, ++itr) {
        if (i) os << ' ';
        os << (*itr);
    }
    return os;
}

// multiset<T>の出力
template <typename T>
std::ostream& operator<< (std::ostream& os, const std::multiset<T>& st) {
    auto itr = st.begin();
    int n = st.size();
    for (int i = 0; i < n; ++i, ++itr) {
        if (i) os << ' ';
        os << (*itr);
    }
    return os;
}

// unordered_set<T>の出力
template <typename T>
std::ostream& operator<< (std::ostream& os, const std::unordered_set<T>& st) {
    auto itr = st.begin();
    int n = st.size();
    for (int i = 0; i < n; ++i, ++itr) {
        if (i) os << ' ';
        os << (*itr);
    }
    return os;
}

// map<Key,Val>の出力
template <typename Key, typename Val>
std::ostream& operator<< (std::ostream& os, const std::map<Key, Val>& mp) {
    auto itr = mp.begin();
    int n = mp.size();
    for (int i = 0; i < n; ++i, ++itr) {
        if (i) os << ' ';
        auto [key, val] = *itr;
        os << key << ':' << val;
    }
    return os;
}

// unordered_map<Key,Val>の出力
template <typename Key, typename Val>
std::ostream& operator<< (std::ostream& os, const std::unordered_map<Key, Val>& mp) {
    auto itr = mp.begin();
    int n = mp.size();
    for (int i = 0; i < n; ++i, ++itr) {
        if (i) os << ' ';
        auto [key, val] = *itr;
        os << key << ':' << val;
    }
    return os;
}


// =============================================================================
// ハッシュ(unordered_XXXで使用する)
// =============================================================================

// hashを組み合わせる関数
// 参考: boost::hash_combine(https://www.boost.org/doc/libs/1_55_0/doc/html/hash/reference.html#boost.hash_combine)
template <typename T>
size_t hash_combine (const size_t seed, const T& x) {
    return seed ^ (std::hash<T>()(x) + 0x9e3779b9 + (seed << 6) + (seed >> 2));
}

// pair用のhash
template <typename T1, typename T2>
struct std::hash<std::pair<T1, T2>> {
    size_t operator() (const std::pair<T1, T2>& p) const noexcept {
        size_t seed = 0;
        seed = hash_combine(seed, p.first);
        seed = hash_combine(seed, p.second);
        return seed;
    }
};

// tuple用のhash
template <int N>
struct HashTuple {
    template <typename Tuple>
    size_t operator() (const Tuple& tuple) const noexcept {
        size_t seed = HashTuple<N-1>()(tuple);
        return hash_combine(seed, std::get<N-1>(tuple));
    }
};
template <>
struct HashTuple<0> {
    template <typename Tuple>
    size_t operator() (const Tuple& tuple) const noexcept {
        return 0;
    }
};
template <typename... Args>
struct std::hash<std::tuple<Args...>> {
    size_t operator() (const std::tuple<Args...>& tuple) const noexcept {
        return HashTuple<std::tuple_size<std::tuple<Args...>>::value>()(tuple);
    }
};


// =============================================================================
// マクロ
// =============================================================================

// 反復
#define GET_REP(_1, _2, _3, NAME, ...) NAME
#define REP_2(i, N) for (int i = 0; i < (int)(N); ++i)
#define REP_3(i, A, B) for (int i = (A); i < (int)(B); ++i)
#define rep(...) GET_REP(__VA_ARGS__, REP_3, REP_2)(__VA_ARGS__)
#define RREP_2(i, N) for (int i = (int)(N)-1; i >= 0; --i)
#define RREP_3(i, A, B) for (int i = (int)(B)-1; i >= (int)(A); --i)
#define rrep(...) GET_REP(__VA_ARGS__, RREP_3, RREP_2)(__VA_ARGS__)

// イテレータ
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()

// メンバ変数・関数
#define fst first
#define scd second
#define PB push_back
#define EB emplace_back

// 文字
#define el '\n'
#define spa ' '

// Yes, No
#define YES std::cout << "YES" << std::endl
#define NO std::cout << "NO" << std::endl
#define Yes std::cout << "Yes" << std::endl
#define No std::cout << "No" << std::endl
#define yes std::cout << "yes" << std::endl
#define no std::cout << "no" << std::endl
#define YESNO(b) std::cout << ((b) ? "YES" : "NO") << std::endl
#define YesNo(b) std::cout << ((b) ? "Yes" : "No") << std::endl
#define yesno(b) std::cout << ((b) ? "yes" : "no") << std::endl

// デバッグ
#define debug(x) std::cerr << #x << " = " << (x) << std::endl

// using宣言
using namespace std;
using ll = long long;
using ull = unsigned long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
using vi = vector<int>;
using vvi = vector<vi>;
using vpii = vector<pii>;
using vl = vector<ll>;
using vvl = vector<vl>;
using vpll = vector<pll>;

// 定数
constexpr int INF = std::numeric_limits<int>::max();
constexpr ll INFLL = std::numeric_limits<ll>::max();
const string ABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const string abc = "abcdefghijklmnopqrstuvwxyz";
const vpii DX = {{-1,0},{1,0},{0,-1},{0,1}};


int main () {
    IN(int, n, q);
    vi A(n+1);
    rep(i, 1, n+1) A[i] = 1;
    int old = 1;
    while (q--) {
        IN(int, x, y);
        int cnt = 0;
        rep(i, old, x+1) {
            cnt += A[i];
            A[i] = 0;
        }
        A[y] += cnt;
        old = max(old, x+1);
        cout << cnt << el;
    }
}

Submission Info

Submission Time
Task C - Upgrade Required
User WaTeR7
Language C++ 20 (gcc 12.2)
Score 300
Code Size 6952 Byte
Status AC
Exec Time 275 ms
Memory 7216 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 1
AC × 26
Set Name Test Cases
Sample sample_01.txt
All hand_01.txt, hand_02.txt, hand_03.txt, sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt
Case Name Status Exec Time Memory
hand_01.txt AC 266 ms 7148 KiB
hand_02.txt AC 269 ms 7024 KiB
hand_03.txt AC 270 ms 7020 KiB
sample_01.txt AC 1 ms 3360 KiB
test_01.txt AC 1 ms 3456 KiB
test_02.txt AC 272 ms 6988 KiB
test_03.txt AC 270 ms 7072 KiB
test_04.txt AC 273 ms 7024 KiB
test_05.txt AC 273 ms 7008 KiB
test_06.txt AC 275 ms 7072 KiB
test_07.txt AC 269 ms 7096 KiB
test_08.txt AC 271 ms 7028 KiB
test_09.txt AC 271 ms 7216 KiB
test_10.txt AC 242 ms 3472 KiB
test_11.txt AC 243 ms 3436 KiB
test_12.txt AC 241 ms 3656 KiB
test_13.txt AC 244 ms 3468 KiB
test_14.txt AC 270 ms 7064 KiB
test_15.txt AC 262 ms 7068 KiB
test_16.txt AC 269 ms 7120 KiB
test_17.txt AC 268 ms 7020 KiB
test_18.txt AC 262 ms 7020 KiB
test_19.txt AC 271 ms 7020 KiB
test_20.txt AC 271 ms 7068 KiB
test_21.txt AC 272 ms 7092 KiB
test_22.txt AC 269 ms 7216 KiB