Advertisement
DInhjeklaee

Untitled

Feb 24th, 2020
579
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll int64_t
  4. #define rep(i,a,b); for (ll i=a; i<=b; i++)
  5. #define ii pair<ll,ll>
  6. #define vll vector<ll>
  7. #define vii vector<ii>
  8. #define a first
  9. #define b second
  10.  
  11. int main()
  12. {
  13.     ll n;
  14.     cin>>n;
  15.     ll a[n+10],SoCach[n+10],ans=0,length[n+10],lengthMax=0;
  16.     vll b1[n+10],b(n+10,1e11);
  17.     //b1 luu vi tri cac ptu co legth = nhau
  18.     rep(i,0,n) b1[i].clear();//clean cho sạch tý ? t đập hen
  19.     b[0]=-1e11;// quốc dân hen
  20.     rep(i,1,n){
  21.         cin>>a[i];
  22.        
  23.         ll k=lower_bound(b.begin(),b.end(),a[i])-b.begin();//quốc dân nữa nè hen
  24.         b[k]=a[i];//như trên hen
  25.        
  26.         SoCach[i]=0;//làm sạch xíu cộng hen
  27.         if (b1[k-1].empty()) SoCach[i]=1;//đừng hỏi t hen
  28.         else
  29.             for (ll j:b1[k-1]) if (a[i]>a[j]) SoCach[i]=(SoCach[i]+SoCach[j])%1000000007;//tính nè hen
  30.         b1[k].push_back(i);//lưu vị trí hen
  31.         length[i]=k;//lưu độ dài hen
  32.         //
  33.         lengthMax=max(lengthMax,k);
  34.     }
  35.    
  36.     rep(i,1,n) if (lengthMax==length[i]) ans=(ans+SoCach[i])%1000000007;
  37.    
  38.     cout<<ans;
  39.     return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement