Guest User

ACTIV

a guest
Aug 27th, 2018
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define endl '\n'
  3. #define INF 999999999
  4.  
  5. typedef long long int ll;
  6.  
  7. using namespace std;
  8.  
  9. int n;
  10. vector <pair<int ,int> > interval;
  11. bool dp[100002];
  12. ll dpp[100002];
  13. const ll mod=100000000;
  14.  
  15. /*bool sortBySec(const pair<int,int>a, const pair<int,int> b){
  16.   return a.second<b.second;
  17. }*/
  18.  
  19. int next(int i){//returns the first interval which has its startTime >= EndTime of the ith interval
  20.   auto it = lower_bound(interval.begin(), interval.end(), make_pair(interval[i].second,0));
  21.   if(it==interval.end())return n+1;
  22.   return it-interval.begin();
  23. }
  24.  
  25. ll DP(int i){//int i represents ith interval the intervals sorted by their endtime
  26.   if(i==n-1)return 1;
  27.   if(i>=n)return 0;//handles when next(i) returns n+1
  28.   if(dp[i])return dpp[i];
  29.   dp[i]=1;
  30.   dpp[i] = (DP(next(i))%mod+(1 + DP(i+1))%mod)%mod;
  31.   return dpp[i];
  32. }
  33. void makeFalse(){
  34.   for(int i=0; i<n+2; i++){
  35.     dp[i]=dpp[i]=0;
  36.     }
  37. }
  38. int main(){
  39.   ios_base::sync_with_stdio(false);cin.tie(NULL);
  40.   int s,e;
  41.   ll ans;
  42.   while(cin >> n && n!=-1){
  43.     interval.clear();
  44.     for(int i=0; i<n; i++){
  45.       cin >> s >> e;
  46.       interval.push_back({s,e});
  47.     }
  48.     //sort(interval.begin(), interval.end(), sortBySec);
  49.     sort(interval.begin(),interval.end());
  50.     makeFalse();
  51.     ans = DP(0);
  52.     int res = 1 + floor(log10(ans));
  53.     for(int i=0; i<8-res; i++)cout << 0;
  54.     cout << ans << endl;
  55.   }
  56. }
Add Comment
Please, Sign In to add comment