Please sign in first.
Submission #70078008
Source Code Expand
#include <bits/stdc++.h>
//#define int long long
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define fr first
#define se second
#define endl '\n'
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const int maxn = 2e5 + 5;
void solve()
{
int n, m;
cin >> n >> m;
vector<int> a(n);
for(int i = 0; i < n; i ++){
cin >> a[i];
}
if(n == 1){
cout << (a[0] == 0) + 1 << endl;
return;
}
auto mod = [&](int x){
if(x >= m) x -= m;
return x;
};
unordered_map<int,int> mp;
function<void(int, int, vector<int>&)> dfs = [&](int pos, int sum, vector<int>& vec){ // 暴力找合法的子序列
if(pos >= (int)vec.size()){
mp[sum] ++;
return;
}
dfs(pos + 2, mod(sum + vec[pos]), vec);
dfs(pos + 1, sum, vec);
};
auto work = [&](int start, vector<int>& vec) -> unordered_map<int,int>{
dfs(0, start, vec);
return mp;
};
int mid = (n - 1) / 2;
vector<int> vecl, vecr;
for(int i = 0; i < n; i ++){
if(i <= mid) vecl.pb(a[i]);
else vecr.pb(a[i]);
}
auto mpl = work(0, vecl);
mp.clear();
auto mpr = work(0, vecr);
mp.clear();
ll ans = 0;
for(auto &[r, cnt] : mpl){
if(mpr.count(mod(m - r))) ans += 1ll * cnt * mpr[mod(m - r)];
}
vecl.clear(); vecr.clear();
for(int i = 0; i < n; i ++){
if(i < mid - 1) vecl.pb(a[i]);
if(i > mid + 2) vecr.pb(a[i]);
}
mpl = work(a[mid], vecl);
mp.clear();
mpr = work(a[mid + 1], vecr);
mp.clear();
for(auto &[r, cnt] : mpl){
if(mpr.count(mod(m - r))) ans -= 1ll * cnt * mpr[mod(m - r)];
}
cout << ans << endl;
}
signed main()
{
ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
// int T=1; cin>>T; while(T--)
solve();
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Not Adjacent |
| User | jjjxs |
| Language | C++ 20 (gcc 12.2) |
| Score | 525 |
| Code Size | 2060 Byte |
| Status | AC |
| Exec Time | 2744 ms |
| Memory | 298968 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 525 / 525 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| 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_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt, 01_random_45.txt, 01_random_46.txt, 01_random_47.txt, 01_random_48.txt, 01_random_49.txt, 01_random_50.txt, 01_random_51.txt, 01_random_52.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 3496 KiB |
| 00_sample_01.txt | AC | 1 ms | 3532 KiB |
| 00_sample_02.txt | AC | 1 ms | 3424 KiB |
| 01_random_03.txt | AC | 2720 ms | 298704 KiB |
| 01_random_04.txt | AC | 2717 ms | 298408 KiB |
| 01_random_05.txt | AC | 2720 ms | 298580 KiB |
| 01_random_06.txt | AC | 2700 ms | 297860 KiB |
| 01_random_07.txt | AC | 2704 ms | 298948 KiB |
| 01_random_08.txt | AC | 2477 ms | 284744 KiB |
| 01_random_09.txt | AC | 2733 ms | 298964 KiB |
| 01_random_10.txt | AC | 2698 ms | 298724 KiB |
| 01_random_11.txt | AC | 1 ms | 3404 KiB |
| 01_random_12.txt | AC | 4 ms | 4716 KiB |
| 01_random_13.txt | AC | 1 ms | 3692 KiB |
| 01_random_14.txt | AC | 57 ms | 19864 KiB |
| 01_random_15.txt | AC | 9 ms | 6696 KiB |
| 01_random_16.txt | AC | 2448 ms | 263904 KiB |
| 01_random_17.txt | AC | 2710 ms | 298668 KiB |
| 01_random_18.txt | AC | 2723 ms | 298728 KiB |
| 01_random_19.txt | AC | 2744 ms | 298968 KiB |
| 01_random_20.txt | AC | 125 ms | 18172 KiB |
| 01_random_21.txt | AC | 2564 ms | 287084 KiB |
| 01_random_22.txt | AC | 2704 ms | 298452 KiB |
| 01_random_23.txt | AC | 1919 ms | 242944 KiB |
| 01_random_24.txt | AC | 1 ms | 3676 KiB |
| 01_random_25.txt | AC | 3 ms | 4288 KiB |
| 01_random_26.txt | AC | 4 ms | 4700 KiB |
| 01_random_27.txt | AC | 1 ms | 3612 KiB |
| 01_random_28.txt | AC | 11 ms | 7052 KiB |
| 01_random_29.txt | AC | 1088 ms | 144716 KiB |
| 01_random_30.txt | AC | 1860 ms | 220256 KiB |
| 01_random_31.txt | AC | 1200 ms | 147972 KiB |
| 01_random_32.txt | AC | 957 ms | 128120 KiB |
| 01_random_33.txt | AC | 1326 ms | 155220 KiB |
| 01_random_34.txt | AC | 1129 ms | 140020 KiB |
| 01_random_35.txt | AC | 1814 ms | 226084 KiB |
| 01_random_36.txt | AC | 1242 ms | 158548 KiB |
| 01_random_37.txt | AC | 1 ms | 3544 KiB |
| 01_random_38.txt | AC | 1 ms | 3412 KiB |
| 01_random_39.txt | AC | 1 ms | 3480 KiB |
| 01_random_40.txt | AC | 1 ms | 3368 KiB |
| 01_random_41.txt | AC | 21 ms | 9876 KiB |
| 01_random_42.txt | AC | 57 ms | 3432 KiB |
| 01_random_43.txt | AC | 68 ms | 3464 KiB |
| 01_random_44.txt | AC | 61 ms | 3492 KiB |
| 01_random_45.txt | AC | 55 ms | 3492 KiB |
| 01_random_46.txt | AC | 54 ms | 3356 KiB |
| 01_random_47.txt | AC | 75 ms | 3564 KiB |
| 01_random_48.txt | AC | 56 ms | 3408 KiB |
| 01_random_49.txt | AC | 1 ms | 3396 KiB |
| 01_random_50.txt | AC | 1 ms | 3564 KiB |
| 01_random_51.txt | AC | 1 ms | 3424 KiB |
| 01_random_52.txt | AC | 1 ms | 3404 KiB |