#include<bits/stdc++.h> using namespace std; int x,m,tab[1000006],it,bat[1000006],mat[1000006],a,b,c,wyn,zmi,ti,iter; vector <pair<int,int>>z; vector <pair<int,int>>n; vector <pair<int,int>>cz; int main() { ios_base::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL); cin>>x>>m; for(int i=0;i<m;i++) { cin>>a>>b>>c; if(c==3) { cz.push_back(make_pair(a,b)); } else if(c==2) { n.push_back(make_pair(a,b)); } else { z.push_back(make_pair(a,b)); } } sort(cz.begin(),cz.end()); sort(n.begin(),n.end()); sort(z.begin(),z.end()); //it=cz.size()-1; ti=n.size(); for(int j=cz.size()-1;j>=0;j--) { tab[cz[j].first]=cz[j].second-cz[j].first; for(int i=cz[j].first;i<=cz[j].second;i++) { if(tab[i]!=0) { if(tab[i]>cz[j].second-i) { tab[cz[j].first]+=tab[i]-(cz[j].second-i); } } } } for(int j=0;j<z.size();j++) { for(int i=z[j].first;i<=z[j].second;i++) { if(bat[i]==0) { bat[i]=z[j].second-i+1; } else { i+=bat[i]-1; } } } for(int j=0;j<n.size();j++) { for(int i=n[j].first;i<=n[j].second;i++) { if(mat[i]==0) { mat[i]=n[j].second-i+1; } else { i+=mat[i]-1; } } } for(int k=0;k<=x;k++) { if(tab[k]==0) { if(bat[k]>0&&mat[k]>0) wyn++; } else { k+=tab[k]; } } cout<<wyn; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | #include<bits/stdc++.h> using namespace std; int x,m,tab[1000006],it,bat[1000006],mat[1000006],a,b,c,wyn,zmi,ti,iter; vector <pair<int,int>>z; vector <pair<int,int>>n; vector <pair<int,int>>cz; int main() { ios_base::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL); cin>>x>>m; for(int i=0;i<m;i++) { cin>>a>>b>>c; if(c==3) { cz.push_back(make_pair(a,b)); } else if(c==2) { n.push_back(make_pair(a,b)); } else { z.push_back(make_pair(a,b)); } } sort(cz.begin(),cz.end()); sort(n.begin(),n.end()); sort(z.begin(),z.end()); //it=cz.size()-1; ti=n.size(); for(int j=cz.size()-1;j>=0;j--) { tab[cz[j].first]=cz[j].second-cz[j].first; for(int i=cz[j].first;i<=cz[j].second;i++) { if(tab[i]!=0) { if(tab[i]>cz[j].second-i) { tab[cz[j].first]+=tab[i]-(cz[j].second-i); } } } } for(int j=0;j<z.size();j++) { for(int i=z[j].first;i<=z[j].second;i++) { if(bat[i]==0) { bat[i]=z[j].second-i+1; } else { i+=bat[i]-1; } } } for(int j=0;j<n.size();j++) { for(int i=n[j].first;i<=n[j].second;i++) { if(mat[i]==0) { mat[i]=n[j].second-i+1; } else { i+=mat[i]-1; } } } for(int k=0;k<=x;k++) { if(tab[k]==0) { if(bat[k]>0&&mat[k]>0) wyn++; } else { k+=tab[k]; } } cout<<wyn; } |