Submission #851309

# Submission time Handle Problem Language Result Execution time Memory
851309 2023-09-19T14:17:48 Z niter Sightseeing in Kyoto (JOI22_kyoto) C++14
10 / 100
367 ms 83792 KB
#include <bits/stdc++.h>
#define loop(i,a,b) for(int i=a;i<b;i++)
#define pii pair<int,int>
#define pb push_back
#define ins insert
#define ff first
#define ss second
#define opa(x) cout << #x << " = " << x << ", ";
#define op(x) cout << #x << " = " << x << endl;
#define ops(x) cout << x;
#define entr cout << endl;
#define spac cout << ' ';
#define all(x) (x).begin(), (x).end()
#define STL(x) cout << #x << " : "; for(auto &qwe:x) cout << qwe << ' '; cout << endl;
#define arr(x, n) cout << #x << " : "; loop(qwe,0,n) cout << x[qwe] << ' '; cout << endl;
#define deb1 cout << "deb1" << endl;
#define deb2 cout << "deb2" << endl;
#define deb3 cout << "deb3" << endl;
#define deb4 cout << "deb4" << endl;
#define deb5 cout << "deb5" << endl;
using namespace std;
typedef long long ll;

const int mxn = 1024000;
ll dp[mxn];
int a_in[100005], b_in[100005];
vector<ll> a, b;
vector<ll> mul_a, mul_b;
const ll INF = 1e18;
vector<pair<int, ll>> E[mxn];

inline int hsh(int i, int j){ return (i << 10) + j; }
inline int get_i(int x){ return x >> 10; }
inline int get_j(int x){ return x & 1023; }
void solve(){
    int n, m; cin >> n >> m;
    loop(i,0,n){
        cin >> a_in[i];
    }
    loop(j,0,m){
        cin >> b_in[j];
    }
    a.pb(a_in[0]);
    int now_mul = 1;
    loop(i,1,n-1){
        if(a_in[i] >= a_in[i-1] && a_in[i] >= a_in[i+1]){
            a_in[i] = a_in[i-1];
            now_mul++;
        }
        else{
            a.pb(a_in[i]);
            mul_b.pb(now_mul);
            now_mul = 1;
        }
    }
    a.pb(a_in[n-1]);
    mul_b.pb(now_mul);
    n = a.size();

    now_mul = 1;
    b.pb(b_in[0]);
    loop(i,1,m-1){
        if(b_in[i] >= b_in[i-1] && b_in[i] >= b_in[i+1]){
            b_in[i] = b_in[i-1];
            now_mul++;
        }
        else{
            b.pb(b_in[i]);
            mul_a.pb(now_mul);
            now_mul = 1;
        }
    }
    b.pb(b_in[m-1]);
    mul_a.pb(now_mul);
    m = b.size();

    loop(i,0,n){
        loop(j,0,m){
            dp[hsh(i, j)] = INF;
        }
    }
    loop(i,0,n){
        loop(j,0,m-1){
            E[hsh(i, j)].pb({hsh(i, j+1), a[i] * mul_a[j]});
        }
    }
    loop(j,0,m){
        loop(i,0,n-1){
            E[hsh(i, j)].pb({hsh(i+1, j), b[j] * mul_b[i]});
        }
    }
    dp[0] = 0;
    priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<pair<ll, int>>> pq;
    pq.push({0, 0});
    while(!pq.empty()){
        ll dis = pq.top().ff;
        int now = pq.top().ss;
//        opa(dis) op(now);
        pq.pop();
        if(dis != dp[now]) continue;
        for(auto &i:E[now]){
            ll nxt_dis = dis + i.ss;
            int nxt = i.ff;
            if(dp[nxt] > nxt_dis){
                dp[nxt] = nxt_dis;
                pq.push({nxt_dis, nxt});
            }
        }
    }
    cout << dp[hsh(n-1, m-1)] << '\n';
}

int main(){
    ios::sync_with_stdio(false); cin.tie(0);
//    freopen("test_input.txt", "r", stdin);
    int t = 1;
    while(t--){
        solve();
    }
}
# Verdict Execution time Memory Grader output
1 Correct 6 ms 27224 KB Output is correct
2 Correct 5 ms 27224 KB Output is correct
3 Correct 6 ms 27224 KB Output is correct
4 Correct 10 ms 28248 KB Output is correct
5 Correct 6 ms 29272 KB Output is correct
6 Correct 6 ms 27224 KB Output is correct
7 Correct 5 ms 27224 KB Output is correct
8 Correct 6 ms 27224 KB Output is correct
9 Correct 130 ms 48088 KB Output is correct
10 Correct 117 ms 46800 KB Output is correct
11 Correct 119 ms 47780 KB Output is correct
12 Correct 113 ms 47764 KB Output is correct
13 Correct 363 ms 83784 KB Output is correct
14 Correct 111 ms 47440 KB Output is correct
15 Correct 104 ms 46608 KB Output is correct
16 Correct 367 ms 83792 KB Output is correct
17 Correct 6 ms 27224 KB Output is correct
18 Correct 5 ms 27228 KB Output is correct
19 Correct 5 ms 27224 KB Output is correct
20 Correct 6 ms 27224 KB Output is correct
21 Correct 6 ms 27224 KB Output is correct
22 Correct 7 ms 27224 KB Output is correct
23 Correct 7 ms 27316 KB Output is correct
24 Correct 6 ms 27224 KB Output is correct
25 Correct 6 ms 27224 KB Output is correct
26 Correct 6 ms 27224 KB Output is correct
27 Correct 6 ms 27224 KB Output is correct
28 Correct 6 ms 27224 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 27092 KB Output is correct
2 Correct 5 ms 27224 KB Output is correct
3 Incorrect 96 ms 44372 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 27224 KB Output is correct
2 Correct 5 ms 27224 KB Output is correct
3 Correct 6 ms 27224 KB Output is correct
4 Correct 10 ms 28248 KB Output is correct
5 Correct 6 ms 29272 KB Output is correct
6 Correct 6 ms 27224 KB Output is correct
7 Correct 5 ms 27224 KB Output is correct
8 Correct 6 ms 27224 KB Output is correct
9 Correct 130 ms 48088 KB Output is correct
10 Correct 117 ms 46800 KB Output is correct
11 Correct 119 ms 47780 KB Output is correct
12 Correct 113 ms 47764 KB Output is correct
13 Correct 363 ms 83784 KB Output is correct
14 Correct 111 ms 47440 KB Output is correct
15 Correct 104 ms 46608 KB Output is correct
16 Correct 367 ms 83792 KB Output is correct
17 Correct 6 ms 27224 KB Output is correct
18 Correct 5 ms 27228 KB Output is correct
19 Correct 5 ms 27224 KB Output is correct
20 Correct 6 ms 27224 KB Output is correct
21 Correct 6 ms 27224 KB Output is correct
22 Correct 7 ms 27224 KB Output is correct
23 Correct 7 ms 27316 KB Output is correct
24 Correct 6 ms 27224 KB Output is correct
25 Correct 6 ms 27224 KB Output is correct
26 Correct 6 ms 27224 KB Output is correct
27 Correct 6 ms 27224 KB Output is correct
28 Correct 6 ms 27224 KB Output is correct
29 Correct 6 ms 27092 KB Output is correct
30 Correct 5 ms 27224 KB Output is correct
31 Incorrect 96 ms 44372 KB Output isn't correct
32 Halted 0 ms 0 KB -