提出 #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 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |