Submission #394971

#TimeUsernameProblemLanguageResultExecution timeMemory
394971Pichon5Fancy Fence (CEOI20_fancyfence)C++17
0 / 100
2 ms204 KiB
#include<bits/stdc++.h> #define lcm(a,b) (a/__gcd(a,b))*b #define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define ll long long int #define vi vector<int> #define vll vector<ll> #define pb push_back #define F first #define S second #define mp make_pair //salida rapida "\n" //DECIMALES fixed<<sp(n)<<x<<endl; //gcd(a,b)= ax + by //lCB x&-x //set.erase(it) - ersases the element present at the required index//auto it = s.find(element) //set.find(element) - iterator pointing to the given element if it is present else return pointer pointing to set.end() //set.lower_bound(element) - iterator pointing to element greater than or equal to the given element //set.upper_bound(element) - iterator pointing to element greater than the given element // | ^ //__builtin_popcount(x) using namespace std; const ll MOD=1e9+7; vll h,w; ll bin(ll x){ return ((x*(x+1))/2)%MOD; } ll T(ll x,ll y){ if(x==0 or y==0)return 0; return (bin(x)%MOD*bin(y)%MOD)%MOD; } int main() { ll n,x; cin>>n; for(int i=0;i<n;i++){ cin>>x; h.pb(x); } ll sum=0; for(int i=0;i<n;i++){ cin>>x; sum+=x;sum%=MOD; w.pb(x); } ll res=T(1,sum); sum=0; for(int i=0;i<n;i++){ if(h[i]==2){ sum+=w[i]; }else{ res=(res+2*T(sum,1))%MOD; sum=0; } } res=(res+2*T(sum,1))%MOD; cout<<res<<endl; return 0; }
#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...