Submission #468377

# Submission time Handle Problem Language Result Execution time Memory
468377 2021-08-27T22:13:44 Z thomas_li Fancy Fence (CEOI20_fancyfence) C++17
12 / 100
1 ms 332 KB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pi;
const int MM = 1e5+5,MOD = 1e9+7,inv2 = 500000004;
int n,h[MM],w[MM],psa[MM],dp[MM];
int c2(int x){
    int val = (1ll*x*((x-1+MOD)%MOD) % MOD) * inv2 % MOD;
    return (val+x)% MOD;
}
int main(){
    cin.tie(0)->sync_with_stdio(0);
    cin >> n; 
    for(int i = 1; i <= n; i++) cin >> h[i];
    for(int i = 1; i <= n; i++) cin >> w[i],psa[i] = (psa[i-1] + w[i]) % MOD;
    stack<int> st; st.push(0);
    int ans = 0;
    for(int i = 1; i <= n; i++){
        while(st.size() && h[st.top()] > h[i]) st.pop(); 
        int j = st.top();
        dp[i] = dp[j];     
        dp[i] = (dp[i] + 1ll*w[j]*c2(h[j]) % MOD)%MOD; 
        dp[i] = (dp[i] + 1ll*((psa[i-1] - psa[j]+MOD)%MOD)*c2(h[i]) % MOD) % MOD;
        ans = ((ans + 1ll*dp[i]*w[i] % MOD)%MOD + 1ll*c2(w[i])*c2(h[i]) % MOD);
        st.push(i);
    }
    cout << ans << "\n";
}

# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 332 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 332 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 332 KB Output is correct
2 Incorrect 1 ms 332 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 332 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 332 KB Output is correct
2 Incorrect 1 ms 332 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 0 ms 332 KB Output is correct
5 Correct 0 ms 332 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Incorrect 1 ms 332 KB Output isn't correct
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 0 ms 204 KB Output is correct
6 Correct 0 ms 204 KB Output is correct
7 Correct 0 ms 332 KB Output is correct
8 Correct 0 ms 204 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Incorrect 1 ms 332 KB Output isn't correct
11 Halted 0 ms 0 KB -