답안 #782431

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
782431 2023-07-14T00:52:32 Z eltu0815 Sightseeing in Kyoto (JOI22_kyoto) C++14
30 / 100
42 ms 33272 KB
#include <bits/stdc++.h>
#define MAX 500005
#define MOD (ll)(1e9+7)
#define INF (ll)(1e18)
#define inf (1987654321)
 
using namespace std;    
typedef long long ll;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
 
int n, m, q;
int a[100005], b[100005];
int mna[1005], mxa[1005];
int mnb[1005], mxb[1005];
ll dp[2005][2005];
 
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    
    cin >> n >> m;
    for(int i = 1; i <= n; ++i) cin >> a[i];
    for(int i = 1; i <= m; ++i) cin >> b[i];
    for(int i = 1; i <= 1000; ++i) {
        mna[i] = mnb[i] = inf;
        mxa[i] = mxb[i] = -1;
    }
    for(int i = 1; i <= n; ++i) mna[a[i]] = min(mna[a[i]], i), mxa[a[i]] = max(mxa[a[i]], i);
    for(int i = 1; i <= m; ++i) mnb[b[i]] = min(mnb[b[i]], i), mxb[b[i]] = max(mxb[b[i]], i);
    
    vector<int> row, col;
    for(int i = 1; i <= 1000; ++i) {
        if(mna[i] == inf) continue;
        row.push_back(mna[i]);
        if(mna[i] != mxa[i]) row.push_back(mxa[i]);
    }
    for(int i = 1; i <= 1000; ++i) {
        if(mnb[i] == inf) continue;
        col.push_back(mnb[i]);
        if(mnb[i] != mxb[i]) col.push_back(mxb[i]);
    }
    sort(row.begin(), row.end());
    sort(col.begin(), col.end());
    
    for(int i = 0; i < (int)col.size(); ++i) dp[0][i] = (ll)a[row[0]] * (col[i] - 1);
    for(int i = 1; i < (int)row.size(); ++i) {
        for(int j = 0; j < (int)col.size(); ++j) {
            if(j == 0) dp[i][0] = (ll)b[col[0]] * (row[i] - 1);
            else {
                dp[i][j] = inf;
                dp[i][j] = min(dp[i][j], dp[i - 1][j] + (ll)b[col[j]] * (row[i] - row[i - 1]));
                dp[i][j] = min(dp[i][j], dp[i][j - 1] + (ll)a[row[i]] * (col[j] - col[j - 1]));
            }
        }
    }
    cout << dp[row.size() - 1][col.size() - 1];
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Runtime error 1 ms 468 KB Execution killed with signal 11
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 4 ms 3924 KB Output is correct
4 Correct 25 ms 32028 KB Output is correct
5 Correct 5 ms 2772 KB Output is correct
6 Correct 7 ms 8792 KB Output is correct
7 Correct 35 ms 33220 KB Output is correct
8 Correct 37 ms 33228 KB Output is correct
9 Correct 42 ms 33232 KB Output is correct
10 Correct 32 ms 33180 KB Output is correct
11 Correct 33 ms 33204 KB Output is correct
12 Correct 35 ms 32976 KB Output is correct
13 Correct 34 ms 32960 KB Output is correct
14 Correct 39 ms 33272 KB Output is correct
15 Correct 12 ms 2004 KB Output is correct
16 Correct 1 ms 340 KB Output is correct
17 Correct 1 ms 324 KB Output is correct
18 Correct 1 ms 340 KB Output is correct
19 Correct 1 ms 332 KB Output is correct
20 Correct 1 ms 340 KB Output is correct
21 Correct 0 ms 340 KB Output is correct
22 Correct 1 ms 340 KB Output is correct
23 Correct 1 ms 340 KB Output is correct
24 Correct 1 ms 340 KB Output is correct
25 Correct 0 ms 340 KB Output is correct
26 Correct 0 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Runtime error 1 ms 468 KB Execution killed with signal 11
4 Halted 0 ms 0 KB -