提出 #56813612


ソースコード 拡げる

#include <bits/stdc++.h>
#include <atcoder/all>

using namespace std;
using namespace atcoder;

// template {{{
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define lb lower_bound
#define ub upper_bound
#define f first
#define s second
#define resz resize

#define sz(x) int((x).size())
#define all(x) (x).begin(), (x).end()

#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define F0R(i, a) for (int i = 0; i < (a); i++)
#define FORd(i, a, b) for (int i = (b)-1; i >= (a); i--)
#define F0Rd(i, a) for (int i = (a)-1; i >= 0; i--)
#define trav(a, x) for (auto& a : x)

#define sort_by(x, y) sort(all(x), [&](const auto& a, const auto& b) { return y; })

using ll = int64_t;
using vi = vector<int>;
using vvi = vector<vi>;
using vll = vector<ll>;
using vvll = vector<vll>;
using vb = vector<bool>;
using vd = vector<double>;
using vs = vector<string>;

using pii = pair<int, int>;
using pll = pair<ll, ll>;
using pdd = pair<double, double>;

using vpii = vector<pii>;
using vvpii = vector<vpii>;
using vpll = vector<pll>;
using vvpll = vector<vpll>;
using vpdd = vector<pdd>;
using vvpdd = vector<vpdd>;

template<typename T> void ckmin(T& a, const T& b) { a = min(a, b); }
template<typename T> void ckmax(T& a, const T& b) { a = max(a, b); }

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

namespace __algorithm {
    template<typename T> void dedup(vector<T>& v) {
        sort(all(v)); v.erase(unique(all(v)), v.end());
    }
    template<typename T> typename vector<T>::const_iterator find(vector<T>& v, const T& x) {
        auto it = lower_bound(all(v), x); return it != v.end() && *it == x ? it : v.end();
    }
    template<typename T> int index(vector<T>& v, const T& x) {
        auto it = find(v, x); assert(it != v.end() && *it == x); return int(it - v.begin());
    }
    template<typename C, typename T, typename OP> vector<T> prefixes(const C& v, T id, OP op) {
        vector<T> r(sz(v)+1, id); F0R (i, sz(v)) r[i+1] = op(r[i], v[i]); return r;
    }
    template<typename C, typename T, typename OP> vector<T> suffixes(const C& v, T id, OP op) {
        vector<T> r(sz(v)+1, id); F0Rd (i, sz(v)) r[i] = op(v[i], r[i+1]); return r;
    }
}
using namespace __algorithm;

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
struct __monostate {
    friend istream& operator>>(istream& is, const __monostate& ms) { return is; }
    friend ostream& operator<<(ostream& os, const __monostate& ms) { return os; }
    friend __monostate operator+(const __monostate& a, const __monostate& b) { return a; }
} ms;
#pragma GCC diagnostic pop

namespace __input {
    template<class T1, class T2> void re(pair<T1,T2>& p);
    template<class T> void re(vector<T>& a);
    template<class T, size_t SZ> void re(array<T,SZ>& a);
 
    template<class T> void re(T& x) { cin >> x; }
    void re(double& x) { string t; re(t); x = stod(t); }
    template<class Arg, class... Args> void re(Arg& first, Args&... rest) {
        re(first); re(rest...);
    }
 
    template<class T1, class T2> void re(pair<T1,T2>& p) { re(p.f,p.s); }
    template<class T> void re(vector<T>& a) { F0R(i,sz(a)) re(a[i]); }
    template<class T, size_t SZ> void re(array<T,SZ>& a) { F0R(i,SZ) re(a[i]); }
}
using namespace __input;
 
namespace __output {
    template<class T1, class T2> void pr(const pair<T1,T2>& x);
    template<class T, size_t SZ> void pr(const array<T,SZ>& x);
    template<class T> void pr(const vector<T>& x);
    template<class T> void pr(const set<T>& x);
    template<class T1, class T2> void pr(const map<T1,T2>& x);
 
    template<class T> void pr(const T& x) { cout << x; }
    template<class Arg, class... Args> void pr(const Arg& first, const Args&... rest) {
        pr(first); pr(rest...);
    }
 
    template<class T1, class T2> void pr(const pair<T1,T2>& x) {
        pr("{",x.f,", ",x.s,"}");
    }
    template<class T, bool pretty = true> void prContain(const T& x) {
        if (pretty) pr("{");
        bool fst = 1; for (const auto& a: x) pr(!fst?pretty?", ":" ":"",a), fst = 0;
        if (pretty) pr("}");
    }
    template<class T> void pc(const T& x) { prContain<T, false>(x); pr("\n"); }
    template<class T, size_t SZ> void pr(const array<T,SZ>& x) { prContain(x); }
    template<class T> void pr(const vector<T>& x) { prContain(x); }
    template<class T> void pr(const set<T>& x) { prContain(x); }
    template<class T1, class T2> void pr(const map<T1,T2>& x) { prContain(x); }
 
    void ps() { pr("\n"); }
    template<class Arg> void ps(const Arg& first) {
        pr(first); ps();
    }
    template<class Arg, class... Args> void ps(const Arg& first, const Args&... rest) {
        pr(first," "); ps(rest...);
    }
}
using namespace __output;
 
#define TRACE(x) x
#define __pn(x) pr(#x, " = ")
#define pd(...) __pn((__VA_ARGS__)), ps(__VA_ARGS__), cout << flush

// using mint = modint998244353;
// using vmi = vector<mint>;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int N, M;
    cin >> N >> M;
    vll A(N);
    for (int i=0;i<N;i++) cin >> A[i];

    vll cum(N+1, 0);
    for (int i=0;i<N;i++) cum[i+1] = cum[i] + A[i];

    ll ans = 0;
    ll tot = cum[N] % M;
    vll freq(M, 0);
    for (int i=0;i<N;i++) {
        // come from before
        int key = (int)(cum[i] % M);
        ans += freq[key];
        // go to before
        ans += freq[(M + key - tot) % M];
        freq[key]++;
    }
    cout << ans << endl;

    return 0;
}

提出情報

提出日時
問題 D - Pedometer
ユーザ sajninredoc
言語 C++ 20 (gcc 12.2)
得点 400
コード長 5677 Byte
結果 AC
実行時間 19 ms
メモリ 14204 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 3
AC × 61
セット名 テストケース
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.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, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt
ケース名 結果 実行時間 メモリ
sample_01.txt AC 1 ms 3552 KiB
sample_02.txt AC 5 ms 10996 KiB
sample_03.txt AC 1 ms 3500 KiB
test_01.txt AC 1 ms 3512 KiB
test_02.txt AC 1 ms 3636 KiB
test_03.txt AC 3 ms 3640 KiB
test_04.txt AC 3 ms 3672 KiB
test_05.txt AC 14 ms 6864 KiB
test_06.txt AC 19 ms 12340 KiB
test_07.txt AC 7 ms 12100 KiB
test_08.txt AC 9 ms 6244 KiB
test_09.txt AC 3 ms 3892 KiB
test_10.txt AC 6 ms 4664 KiB
test_11.txt AC 14 ms 6308 KiB
test_12.txt AC 14 ms 6248 KiB
test_13.txt AC 2 ms 3624 KiB
test_14.txt AC 11 ms 9244 KiB
test_15.txt AC 13 ms 14204 KiB
test_16.txt AC 2 ms 3512 KiB
test_17.txt AC 1 ms 3524 KiB
test_18.txt AC 5 ms 3848 KiB
test_19.txt AC 14 ms 6292 KiB
test_20.txt AC 9 ms 5028 KiB
test_21.txt AC 10 ms 6812 KiB
test_22.txt AC 13 ms 13652 KiB
test_23.txt AC 17 ms 14060 KiB
test_24.txt AC 14 ms 6240 KiB
test_25.txt AC 8 ms 4668 KiB
test_26.txt AC 14 ms 6276 KiB
test_27.txt AC 7 ms 4388 KiB
test_28.txt AC 7 ms 5644 KiB
test_29.txt AC 7 ms 6088 KiB
test_30.txt AC 14 ms 9988 KiB
test_31.txt AC 7 ms 11576 KiB
test_32.txt AC 7 ms 4436 KiB
test_33.txt AC 11 ms 5384 KiB
test_34.txt AC 15 ms 6240 KiB
test_35.txt AC 10 ms 6268 KiB
test_36.txt AC 9 ms 6280 KiB
test_37.txt AC 12 ms 7056 KiB
test_38.txt AC 14 ms 7388 KiB
test_39.txt AC 5 ms 11028 KiB
test_40.txt AC 4 ms 3624 KiB
test_41.txt AC 8 ms 5072 KiB
test_42.txt AC 9 ms 6284 KiB
test_43.txt AC 7 ms 5468 KiB
test_44.txt AC 9 ms 5608 KiB
test_45.txt AC 12 ms 6568 KiB
test_46.txt AC 16 ms 9712 KiB
test_47.txt AC 12 ms 12404 KiB
test_48.txt AC 2 ms 3696 KiB
test_49.txt AC 10 ms 6284 KiB
test_50.txt AC 9 ms 6288 KiB
test_51.txt AC 12 ms 6396 KiB
test_52.txt AC 14 ms 6244 KiB
test_53.txt AC 14 ms 7092 KiB
test_54.txt AC 4 ms 7884 KiB
test_55.txt AC 13 ms 12864 KiB
test_56.txt AC 9 ms 6180 KiB
test_57.txt AC 9 ms 6304 KiB
test_58.txt AC 2 ms 3668 KiB