結果
問題 | No.2486 Don't come next to me |
ユーザー |
![]() |
提出日時 | 2023-09-29 22:01:59 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 91 ms / 2,000 ms |
コード長 | 2,613 bytes |
コンパイル時間 | 4,969 ms |
コンパイル使用メモリ | 274,080 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-22 16:01:18 |
合計ジャッジ時間 | 6,853 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 20 |
ソースコード
#pragma GCC target("avx2")#pragma GCC optimize("O3")#pragma GCC optimize("unroll-loops")#include <bits/stdc++.h>using namespace std;using ll = long long;using pl = pair<ll, ll>;#define vl vector<ll>#define vvl vector<vl>#define vvvl vector<vvl>#define vm vector<mint>#define vvm vector<vm>#define vvvm vector<vvm>#define vp vector<pl>#define vvp vector<vp>#define vvvp vector<vvp>#define vs vector<string>#define vvs vector<vs>#define vb vector<bool>#define vvb vector<vb>#define vvvb vector<vvb>#define vd vector<double>#define vvd vector<vd>#define vvvd vector<vd>#define _overload3(_1, _2, _3, name, ...) name#define _rep(i, n) repi(i, 0, n)#define repi(i, a, b) for(ll i = ll(a); i < ll(b); ++i)#define rep(...) _overload3(__VA_ARGS__, repi, _rep, )(__VA_ARGS__)#define all(x) std::begin(x), std::end(x)#define make_unique(v) v.erase(unique(all(v)), v.end());#define sum(...) accumulate(all(__VA_ARGS__), 0LL)#define inf (0x1fffffffffffffffLL)template<class... T>void input(T&... a){(cin >> ... >> a);}template <class T>istream &operator>>(istream &is, vector<T> &v) {for(auto &x : v) {is >> x;}return is;}template <class T>ostream &operator<<(ostream &os, const vector<T> &v) {for(int i = 0; i < (int)v.size(); i++) {if(i != (int)v.size() - 1)os << v[i] << " ";elseos << v[i];}return os;}template <typename T, typename... Args>auto make_v(T x, int arg, Args... args) {if constexpr(sizeof...(args) == 0)return vector<T>(arg, x);elsereturn vector(arg, make_v<T>(x, args...));}template <class T>auto min(const T &a) {return *min_element(all(a));}template <class T>auto max(const T &a) {return *max_element(all(a));}template <class T>bool chmin(T &a, const T &b) {return a > b ? a = b, true : false;}template <class T>bool chmax(T &a, const T &b) {return a < b ? a = b, true : false;}struct IoSetup {IoSetup() {cin.tie(nullptr);ios::sync_with_stdio(false);cout << fixed << setprecision(10);cerr << fixed << setprecision(10);}} iosetup;int main() {ll N, M;cin >> N >> M;vl A(M);cin >> A;auto f = [&](auto self, ll n) -> ll{if(n <= 0) return 0;else if(n == 1) return 1;else if(n % 2 == 1 || n % 4 == 0) return 2 * self(self, n / 2);else return 2 * (1 + self(self, n / 2 - 1));};ll ans = 0;rep(i, M - 1){ans += f(f, A[i + 1] - A[i] - 1);}cout << ans << endl;}