Josif_tepe

Untitled

Feb 26th, 2026
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. using namespace std;
  5. typedef long long ll;
  6. const ll MOD = 1e9 + 7;
  7. int main() {
  8.     ios_base::sync_with_stdio(false);
  9.     ll n;
  10.     cin >> n;
  11.    
  12.     vector<int> v(n);
  13.     for(int i = 0; i < n; i++) {
  14.         cin >> v[i];
  15.     }
  16.    
  17.     vector<int> left(n, -1), right(n, n);
  18.     for(int i = 0; i < n; i++) {
  19.         for(int j = i - 1; j >= 0; j--) {
  20.             if(v[j] <= v[i]) {
  21.                 left[i] = j;
  22.                 break;
  23.             }
  24.         }
  25.        
  26.         for(int j = i + 1; j < n; j++) {
  27.             if(v[j] <= v[i]) {
  28.                 right[i] = j;
  29.                 break;
  30.             }
  31.         }
  32.     }
  33.    
  34.     ll total_subarrays = n * (n + 1) / 2;
  35.     total_subarrays %= MOD;
  36.    
  37.     ll bad_subarrays = 0;
  38.     for(int i = 0; i < n; i++) {
  39.         ll L = (i - left[i]);
  40.         ll R = (right[i] - i);
  41.        
  42.         bad_subarrays += (L * R) % MOD;
  43.         bad_subarrays %= MOD;
  44.     }
  45.    
  46.     cout << (total_subarrays - bad_subarrays + MOD) % MOD << endl;
  47.    
  48.    
  49.    
  50.     return 0;
  51. }
  52.  
Advertisement
Add Comment
Please, Sign In to add comment