답안 #502435

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
502435 2022-01-06T02:18:34 Z Fireball0424 Fancy Fence (CEOI20_fancyfence) C++14
0 / 100
1 ms 332 KB
#include <bits/stdc++.h>
#define int long long
#define fr first
#define sc second
#define pii pair<int,int>
using namespace std;

const int mod = 1e9 + 7;

int modpow(int a, int b){
    if(b == 0) return 1;
    int res = modpow(a, b / 2);
    res = (res * res) % mod;
    if(b & 1) res = (res * a) % mod;
    return res;
}

int cal(int x){
    return (x * (x + 1) / 2) % mod;
}

void solve(){
    int n;
    cin >> n;
    vector<int> h(n + 1, 0), w(n + 1, 0);
    for(int i = 1; i <= n; ++i) cin >> h[i];
    for(int i = 1; i <= n; ++i) cin >> w[i];
    stack<int> stk;
    stk.push(0);
    int ans = 0;
    vector<int> dp(n + 1, 0), pre(n + 1, 0);
    for(int i = 1; i <= n; ++i) pre[i] = pre[i-1] + w[i];
    for(int i = 1; i <= n; ++i) {
        while (h[stk.top()] >= h[i]) stk.pop();
        dp[i] = dp[stk.top()] + cal(h[i]) * cal(pre[i] - pre[stk.top()]);
        ans += dp[stk.top()] * w[i] + cal(h[i]) * (pre[i - 1] - pre[stk.top()]) * w[i] + cal(h[i]) * cal(w[i]);
        stk.push(i);
    }
    cout << ans << endl;
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    //freopen("bbreeds.in", "r");
    //freopen("bbreeds.out", "w");
    solve();
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Incorrect 1 ms 332 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Incorrect 1 ms 236 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 332 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Incorrect 0 ms 332 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Incorrect 0 ms 332 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Incorrect 1 ms 332 KB Output isn't correct