#include <bits/stdc++.h>
using namespace std;
const int mod(1000000007);
pair <int , int64_t> sir[100001];
int stiva[100001];
int main ()
{
ios :: sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int lungime;
cin >> lungime;
for (int indice = 1 ; indice <= lungime ; indice++)
{ cin >> sir[indice].first; }
for (int indice = 1 ; indice <= lungime ; indice++)
{ cin >> sir[indice].second; sir[indice].second += sir[indice - 1].second; }
int modalitati = 0;
for (int indice = 1 ; indice <= lungime ; indice++)
{
while (stiva[0] && sir[stiva[stiva[0]]].first >= sir[indice].first)
{
const int cantitate = (sir[indice - 1].second - (stiva[0] == 1 ? 0 : sir[stiva[stiva[0] - 1]].second)) % mod;
const int stanga = (sir[stiva[stiva[0]] - 1].second - (stiva[0] == 1 ? 0 : sir[stiva[stiva[0] - 1]].second)) % mod;
const int dreapta = (sir[indice - 1].second - sir[stiva[stiva[0]]].second) % mod;
(modalitati += 250000002LL * sir[stiva[stiva[0]]].first % mod * (sir[stiva[stiva[0]]].first + 1) % mod * (((1LL * cantitate * (cantitate + 1) % mod - 1LL * stanga * (stanga + 1) % mod - 1LL * dreapta * (dreapta + 1) % mod) % mod + mod) % mod) % mod) %= mod;
stiva[0]--;
}
stiva[++stiva[0]] = indice;
}
for ( ; stiva[0] ; stiva[0]--)
{
const int cantitate = (sir[lungime].second - (stiva[0] == 1 ? 0 : sir[stiva[stiva[0] - 1]].second)) % mod;
const int stanga = (sir[stiva[stiva[0]] - 1].second - (stiva[0] == 1 ? 0 : sir[stiva[stiva[0] - 1]].second)) % mod;
const int dreapta = (sir[lungime].second - sir[stiva[stiva[0]]].second) % mod;
(modalitati += 250000002LL * sir[stiva[stiva[0]]].first % mod * (sir[stiva[stiva[0]]].first + 1) % mod * (((1LL * cantitate * (cantitate + 1) % mod - 1LL * stanga * (stanga + 1) % mod - 1LL * dreapta * (dreapta + 1) % mod) % mod + mod) % mod) % mod) %= mod;
}
cout << modalitati;
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |