Submission #557892

#TimeUsernameProblemLanguageResultExecution timeMemory
557892DJ035Fancy Fence (CEOI20_fancyfence)C++17
0 / 100
2 ms340 KiB
#include <bits/stdc++.h> #define MEM 111111 #define sanic ios_base::sync_with_stdio(0) #define x first #define y second #define pf push_front #define pb push_back #define all(v) v.begin(), v.end() #define sz size() using namespace std; typedef long long ll; typedef pair<ll, ll> pi; const ll INF = 1e13+7; const ll MOD = 1e9+7; ll gcd(ll a, ll b){ if(a%b) return gcd(b, a%b); return b; } ll c2(ll n){ ll ret = n*(n-1)/2LL; ret %= MOD; ret += MOD; ret %= MOD; return ret; } ll hp(ll l, ll r){ ll a=c2(l+1); ll b=c2(r+1); return ((b-a)%MOD+MOD)%MOD; } ll n,m,t,c; ll h[MEM], w[MEM]; signed main(){ //sanic; 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]; stack<pi> s; ll ans=0; for(int i=0; i<n; i++) s.push({h[i], w[i]}); while(!s.empty()){ ll h1=s.top().x, w1=s.top().y; s.pop(); ans = (ans+(hp((s.empty()?0:s.top().x), h1)*c2(w1+1))%MOD+MOD)%MOD; //cout << h1 << ' ' << w1 << '\n'; if(s.empty()) break; pi ff=s.top(); s.pop(); ff.y += w1; s.push(ff); } cout << ans; } /* 10 1 3 2 4 2 1 3 5 6 7 2 3 5 4 6 2 3 5 6 7 3 2 3 1 3 1 2 660 */
#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...