Guest User

ACTIV(VIBSTER)

a guest
Aug 17th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.59 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. vector <pair<int ,int> > interval2;
  12. bool dp[100001];
  13. ll dpp[100001];
  14. const ll mod=100000000;
  15.  
  16. bool sortBySec(const pair<int,int>a, const pair<int,int> b){
  17.   return a.second<b.second;
  18. }
  19.  
  20. int next(int i){//returns the first interval which has its startTime >= EndTime of the ith interval
  21.   auto it = lower_bound(interval2.begin(), interval2.end(), make_pair(interval[i].second,0));
  22.   int j,k=0;
  23.   if(it==interval2.end())return n+1;
  24.   pair<int,int> m=*it;//cout << m.first << ' ' << i << ' ';
  25.   while(1){
  26.     if(interval[k].first==m.first)break;
  27.     k++;
  28.   }
  29.   return k;
  30. }
  31.  
  32. ll DP(int i){//int i represents ith interval the intervals sorted by their endtime
  33.   if(i==n-1)return 1;
  34.   if(i>=n)return 0;//handles when next(i) returns n+1
  35.   if(dp[i])return dpp[i];
  36.   dp[i]=1;
  37.   dpp[i] = (DP(next(i))%mod+(1 + DP(i+1))%mod)%mod;
  38.   return dpp[i];
  39. }
  40. void makeFalse(){
  41.   for(int i=0; i<n; i++)dp[i]=0;
  42. }
  43. int main(){
  44.   ios_base::sync_with_stdio(false);cin.tie(NULL);
  45.   int s,e;
  46.   ll ans;
  47.   while(cin >> n && n!=-1){
  48.     interval.clear();interval2.clear();
  49.     for(int i=0; i<n; i++){
  50.       cin >> s >> e;
  51.       interval.push_back({s,e});
  52.       interval2.push_back({s,e});
  53.     }
  54.     sort(interval.begin(), interval.end(), sortBySec);
  55.     sort(interval2.begin(),interval2.end());
  56.     makeFalse();
  57.     ans = DP(0);
  58.     int res = 1 + floor(log10(ans));
  59.     for(int i=0; i<8-res; i++)cout << 0;
  60.     cout << ans << endl;
  61.   }  
  62. }
Add Comment
Please, Sign In to add comment