답안 #1100037

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1100037 2024-10-12T13:11:47 Z ocasu Fancy Fence (CEOI20_fancyfence) C++17
12 / 100
2 ms 348 KB
#include <bits/stdc++.h>
using namespace std;

#define int long long

const int m=1e9+7;

signed main(){
    int n; cin>>n;
    vector<int> h(n), w(n);
    for (int i=0; i<n; i++) cin>>h[i];
    for (int i=0; i<n; i++) cin>>w[i];
    vector<int> sumLeft(n,0), sumRight(n,0);
    stack<int> sL,sR;
    for (int i=0; i<n; i++){
        while (!sL.empty() and h[sL.top()]>h[i]){
            sumLeft[i]+=(sumLeft[sL.top()]+w[sL.top()])%m;
            sumLeft[i]%=m;
            sL.pop();
        }
        sL.push(i);
    }
    for (int i=n-1; i>=0; i--){
        while (!sR.empty() and h[sR.top()]>=h[i]){
            sumRight[i]+=(sumRight[sR.top()]+w[sR.top()])%m;
            sumRight[i]%=m;
            sR.pop();
        }
        sR.push(i);
    }
    ///rwgrgw
    int ans=0;
    for (int i=0; i<n; i++){
        int hors = (sumLeft[i]*sumRight[i])%m + (sumLeft[i]*w[i])%m+(sumRight[i]*w[i])%m + ((w[i]*((w[i]-1))*(int)500000004)%m)%m + w[i]%m;
        hors%=m;
        int verts = ((h[i]*((h[i]-1))*(int)500000004)%m)%m + (h[i])%m;
        verts%=m;
        ans+=(hors*verts)%m;
        ans%=m;
    }
    cout<<ans<<'\n';

}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Incorrect 1 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Incorrect 0 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 1 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 1 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Incorrect 1 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -