QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#645532 | #9220. Bus Analysis | ucup-team2432 | WA | 120ms | 24136kb | C++17 | 3.6kb | 2024-10-16 18:52:32 | 2024-10-16 18:52:33 |
Judging History
answer
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
#define ll long long
#define all(v) v.begin(),v.end()
#define sz(v) ((ll)v.size())
#define V vector
#define vi V<int>
#define vll V<ll>
#define eb emplace_back
#define pii pair<int,int>
#define pll pair<ll,ll>
#define fi first
#define se second
#define A array
#define pb push_back
#define mset multiset
#define gpumap __gnu_pbds::gp_hash_table
#define ccumap __gnu_pbds::cc_hash_table
#define ui unsigned int
#define ull unsigned ll
#define i128 __int128
#define cerr if (test) cerr
#define freopen if (test) freopen
#define whtest if (test)
using namespace std;
constexpr int test = 0;
namespace jhsy {
constexpr int B = 75,P = 1e9+7;
struct Info {
ll c{},s{};
Info() {}
Info(ll c,ll s):c(c),s(s) {}
Info friend operator + (const Info &x,const Info &y) {
return {(x.c+y.c)%P,(x.s+y.s)%P};
}
Info add(int k) const {
return {c,s+k*c%P};
}
};
void main() {
int n;
cin >> n;
A<A<A<A<int,4>,B+1>,B+1>,B+1> p{};
for (int x = 0; x <= B; x++) {
for (int y = x; y <= B; y++) {
for (int z = y; z <= B; z++) {
vi f(B+1);
for (int i = 0; i < x; i++) {
f[i] = 0;
}
for (int i = x; i < y; i++) {
f[i] = 1;
}
for (int i = y; i < z; i++) {
f[i] = 2;
}
f[B] = min(f[B-20]+1,f[B-75]+3);
p[x][y][z][3] = f[1];
vi vec;
for (int i = 1; i+1 <= B; i++) {
if (f[i] != f[i+1]) {
vec.eb(i-1);
}
}
vec.resize(3,B);
for (int i = 0; i < 3; i++) {
p[x][y][z][i] = vec[i];
}
}
}
}
A<A<A<Info,B+1>,B+1>,B+1> f{};
f[B][B][B] = {1,0};
auto mv = [&](int i, int j, int k, int x) -> A<int,4> {
vi vec; int c = 0;
if (i != B) {
if (i >= x) {
vec.eb(i-x);
}
else {
c++;
}
}
if (j != B) {
if (j >= x) {
vec.eb(j-x);
}
else {
c++;
}
}
if (k != B) {
if (k >= x) {
vec.eb(k-x);
}
else {
c++;
}
}
vec.resize(3,B);
return {vec[0],vec[1],vec[2],c};
};
for (int o = 0,lst = 0; o < n; o++) {
int cur;
cin >> cur;
int x = cur-lst;
{
decltype(f) g{};
for (int i = 0; i <= B; i++) {
for (int j = i; j <= B; j++) {
for (int k = j; k <= B; k++) {
auto [a,b,c,d] = mv(i, j, k, x - 1);
g[a][b][c] = g[a][b][c]+f[i][j][k].add(d);
}
}
}
f = std::move(g);
}
{
decltype(f) g{};
for (int i = 0; i <= B; i++) {
for (int j = 0; j <= B; j++) {
for (int k = 0; k <= B; k++) {
{
auto [a,b,c,d] = mv(i, j, k, 1);
g[a][b][c] = g[a][b][c]+f[i][j][k].add(d);
}
{
auto [a,b,c,d] = p[i][j][k];
g[a][b][c] = g[a][b][c]+f[i][j][k].add(d);
}
}
}
}
f = std::move(g);
}
lst = cur;
}
ll ans = 0,cnt = 0;
for (int i = 0; i <= B; i++) {
for (int j = 0; j <= B; j++) {
for (int k = 0; k <= B; k++) {
auto [a,b,c,d] = mv(i, j, k, B);
ans = (ans+f[i][j][k].add(d).s)%P;
if (f[i][j][k].c) {
cerr << i << ' ' << j << ' ' << k << ' ' << f[i][j][k].c << ' ' << f[i][j][k].add(d).s << '\n';
}
}
}
}
ans = (2*ans)%P;
cout << ans << '\n';
}
}
int main() {
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout << fixed << setprecision(20);
// jhsy::init();
int T = 1;
// cin >> T;
while (T--) {
jhsy::main();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 120ms
memory: 24136kb
input:
3 1 8 20
output:
18
result:
wrong answer 1st numbers differ - expected: '14', found: '18'