# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
746006 | 2023-05-21T10:31:43 Z | vjudge1 | Fancy Fence (CEOI20_fancyfence) | C++17 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; const long long MOD = 1e9+7; int main(){ long long n; cin >> n; long long x; long long ans = 0; vector<long long> w, h, comp; long long wsum = 0; for(long long i = 0; i < n; i++){ cin >> x; h.push_back(x); } for(long long i = 0; i < n; i++){ cin >> x; wsum += x; wsum = wsum % MOD; w.push_back(x); } for(long long i = 0; i < n; i++){ if(h[i] == 2){ if(i == 0) comp.push_back(w[i]); else if(h[i-1] == 2) comp.back() += w[i]; else comp.push_back(w[i]); } } for(long long k : comp) { k = k % MOD; ans += k(k+1); ans = ans % MOD; } ans += wsum(wsum+1)/2; ans = ans % MOD; cout << ans; }