提出 #57550200


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;
#define IOS ios_base::sync_with_stdio(false); cin.tie(NULL);
#define int long long
#define ld long double
#define nl "\n"
#define rep(i,a,b) for(int i=a;i<b;i++)
#define reprev(i,a,b) for(int i=b-1;i>=a;i--)
#define all(c) c.begin(),c.end()
#define sz(c) (int)c.size()
#define ff first
#define ss second
#define pii pair<int,int>
#define vi vector<int>
#define vii vector<pii>
#define vvi vector<vi>
#define vin(a,n) vi a(n); rep(k_,0,n) {cin>>a[k_];}
#define pb push_back
#define mod 1000000007
#define mod2 998244353
#define inf 1e18
#define pi 3.1415926535897932384626
#define tr(container, it) \
for(auto it = container.begin(); it != container.end(); it++)

// DEBUG FUNCTIONS BEGIN
#ifdef LOCAL
#define debug(x) cerr << #x <<" "; _print(x); cerr << endl;
#else
#define debug(x)
#endif

template <class T> void _print(T t) {cerr << t;}

template <class T, class V> void _print(pair <T, V> p)
{cerr << "{"; _print(p.first); cerr << ","; _print(p.second); cerr << "}";}
template <class T> void _print(vector <T> v)
{cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(set <T> v)
{cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(multiset <T> v)
{cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T, class V> void _print(map <T, V> v)
{cerr << "[ "; for (auto i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(vector < vector<T> > v)
{cerr << "[ " << endl; for (vector<T> i : v) {_print(i); cerr << endl;} cerr<< "]";}
void _print(vector <string> v)
{cerr << "[ " << endl; for (string i : v) {_print(i); cerr << endl;} cerr<< "]";}
// DEBUG FUNCTIONS END

void vout(vector<int> a)
{
    for(int x : a) 
        cout << x << " ";
    cout << nl;
}

int ceill(int a, int b)
{
    return (a+b-1)/b;
}

int32_t main()
{
    #ifdef LOCAL
        freopen("error.txt", "w", stderr);
    #endif
    IOS
    int T = 1;
    // cin >> T;
    for(int test = 1; test <= T; test++)
    {
        int n,k; cin>>n>>k;
        vi a(n+1); rep(i,1,n+1) cin>>a[i];

        vi pref(n+1); rep(i,1,n+1) pref[i] = pref[i-1] + a[i];

        vi dp(n+1); vi dpsum(n+1); dp[0] = 1; dpsum[0] = 1;
        map<int,int> prefdp; prefdp[0] = 1;
        rep(i,1,n+1)
        {
            dp[i] = dpsum[i-1];
            if(prefdp.count(pref[i] - k))
                dp[i] = (dp[i] - prefdp[pref[i] - k] + mod2) % mod2;
            dpsum[i] =( dp[i] + dpsum[i-1]) % mod2;
            (prefdp[pref[i]] += dp[i]) %= mod2;
        }
        debug(dp); debug(prefdp);
        cout<<dp[n]<<nl;
    }
    return 0;
}

提出情報

提出日時
問題 E - Avoid K Partition
ユーザ yellow_13
言語 C++ 20 (gcc 12.2)
得点 475
コード長 2776 Byte
結果 AC
実行時間 89 ms
メモリ 21928 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 475 / 475
結果
AC × 3
AC × 37
セット名 テストケース
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_small_00.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 01_small_04.txt, 01_small_05.txt, 01_small_06.txt, 01_small_07.txt, 01_small_08.txt, 01_small_09.txt, 02_random_00.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 02_random_06.txt, 02_random_07.txt, 02_random_08.txt, 02_random_09.txt, 03_max_00.txt, 03_max_01.txt, 03_max_02.txt, 03_max_03.txt, 03_max_04.txt, 03_max_05.txt, 03_max_06.txt, 03_max_07.txt, 03_max_08.txt, 03_max_09.txt, 04_min_00.txt, 04_min_01.txt, 05_hack_00.txt, 05_hack_01.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 1 ms 3484 KiB
00_sample_01.txt AC 1 ms 3512 KiB
00_sample_02.txt AC 1 ms 3572 KiB
01_small_00.txt AC 1 ms 3416 KiB
01_small_01.txt AC 1 ms 3500 KiB
01_small_02.txt AC 1 ms 3484 KiB
01_small_03.txt AC 1 ms 3540 KiB
01_small_04.txt AC 1 ms 3544 KiB
01_small_05.txt AC 1 ms 3616 KiB
01_small_06.txt AC 1 ms 3488 KiB
01_small_07.txt AC 1 ms 3688 KiB
01_small_08.txt AC 1 ms 3568 KiB
01_small_09.txt AC 1 ms 3480 KiB
02_random_00.txt AC 40 ms 16732 KiB
02_random_01.txt AC 2 ms 3932 KiB
02_random_02.txt AC 32 ms 13148 KiB
02_random_03.txt AC 17 ms 6992 KiB
02_random_04.txt AC 44 ms 15256 KiB
02_random_05.txt AC 11 ms 5240 KiB
02_random_06.txt AC 15 ms 7772 KiB
02_random_07.txt AC 21 ms 7524 KiB
02_random_08.txt AC 28 ms 11204 KiB
02_random_09.txt AC 17 ms 6448 KiB
03_max_00.txt AC 57 ms 21928 KiB
03_max_01.txt AC 20 ms 9688 KiB
03_max_02.txt AC 67 ms 21784 KiB
03_max_03.txt AC 21 ms 9652 KiB
03_max_04.txt AC 89 ms 21792 KiB
03_max_05.txt AC 31 ms 9632 KiB
03_max_06.txt AC 64 ms 21820 KiB
03_max_07.txt AC 33 ms 9652 KiB
03_max_08.txt AC 73 ms 21836 KiB
03_max_09.txt AC 33 ms 9712 KiB
04_min_00.txt AC 1 ms 3456 KiB
04_min_01.txt AC 1 ms 3460 KiB
05_hack_00.txt AC 11 ms 9516 KiB
05_hack_01.txt AC 11 ms 9364 KiB