# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
659443 | 2022-11-17T19:19:45 Z | Lobo | Fancy Fence (CEOI20_fancyfence) | C++17 | 2 ms | 340 KB |
#include<bits/stdc++.h> using namespace std; const long long inf = (long long) 1e18 + 10; const int inf1 = (int) 1e9 + 10; #define int long long #define dbl long double #define endl '\n' #define sc second #define fr first #define mp make_pair #define pb push_back #define all(x) x.begin(), x.end() const int maxn = 1e5+10; const int mod = 1e9+7; int n, h[maxn], w[maxn], ps[maxn]; map<int,vector<int>> ed; void solve() { cin >> n; for(int i = 1; i <= n; i++) { cin >> h[i]; ed[h[i]].pb(i); } for(int i = 1; i <= n; i++) { cin >> w[i]; ps[i] = ps[i-1]+w[i]; } set<pair<int,int>> st; st.insert(mp(1,n)); int curw = ps[n]*(ps[n]+1)/2; int ant = 0; int ans = 0; for(auto X : ed) { int val = X.fr; // cout << val << " " << ant << " " << curw << endl; // l = ant+1 r = val ans+= (curw*((val-ant)*(val+ant+1)/2)%mod)%mod; ans%= mod; ant = val; for(auto i : X.sc) { auto it = st.lower_bound(mp(i,0)); int l = it->fr; int r = it->sc; curw-= (ps[r]-ps[l-1])*(ps[r]-ps[l-1]+1)/2; curw%= mod; st.erase(it); if(i != l) { st.insert(mp(l,i-1)); curw+= (ps[i-1]-ps[l-1])*(ps[i-1]-ps[l-1]+1)/2; curw%= mod; } if(i != r) { st.insert(mp(i+1,r)); curw+= (ps[r]-ps[i])*(ps[r]-ps[i]+1)/2; curw%= mod; } } } ans = (ans+mod)%mod; cout << ans << endl; } int32_t main() { ios::sync_with_stdio(false); cin.tie(0); freopen("in.in", "r", stdin); // freopen("out.out", "w", stdout); int tt = 1; // cin >> tt; while(tt--) { solve(); } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 340 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 340 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 340 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 340 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 340 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 340 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 340 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |