Submission #298017

#TimeUsernameProblemLanguageResultExecution timeMemory
298017VusetOrucovFancy Fence (CEOI20_fancyfence)C++17
100 / 100
37 ms6000 KiB
#pragma GCC optimize("Ofast") #include <bits/stdc++.h> #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/assoc_container.hpp> #define black_tree tree<ll,null_type,less_equal<ll>,rb_tree_tag,tree_order_statistics_node_update> #define pair_black_tree tree<pair<ll,ll>,null_type,less<pair<ll,ll> >,rb_tree_tag,tree_order_statistics_node_update> #define gp __gnu_pbds #define INF 1000000000 #define MOD 1000000007 #define MAX 100001 #define endl '\n' #define ll long long #define ld long double #define lli long long int #define ull unsigned long long #define ulli unsigned long long int #define pb push_back #define pf push_front #define ook order_of_key #define fbo find_by_order #define np next_permutation #define mp make_pair #define eb emplace_back #define mae max_element #define mie min_element #define lb lower_bound #define ub upper_bound #define bs binary_search #define ff first #define ss second using namespace std; using namespace gp; vector<pair<ll,ll> >v; vector<ll>h(MAX),w(MAX); ll n,a,b,c,ans,k=500000004; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n; for(int i=0;i<n;i++){ cin>>h[i]; } for(int i=0;i<n;i++){ cin>>w[i]; } v.pb({0,0}); for(int i=0;i<=n;i++){ c=0; while(v.back().ff>h[i]){ a=max(h[i],v[v.size()-2].ff); b=v.back().ff-a; c=(c+v.back().ss)%MOD; v.pop_back(); ans+=(((b*(b+1)%MOD)*k)%MOD+(a*b)%MOD)*(((c*(c+1)%MOD)*k)%MOD)%MOD; ans%=MOD; } if(v.back().ff==h[i]){ v.back().ss=(v.back().ss+c+w[i])%MOD; } else{ v.pb({h[i],(c+w[i])%MOD}); } } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...