Submission #1293448

#TimeUsernameProblemLanguageResultExecution timeMemory
1293448SSKMFFancy Fence (CEOI20_fancyfence)C++20
100 / 100
17 ms2384 KiB
#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 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...