#include <iostream> #include <vector> #include <cmath> using namespace std; int main(){ std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); int n, m; cin>>n>>m; int d, D; if(sqrt(n)*sqrt(n)==n) d=sqrt(n); else d=sqrt(n)+1; D=d*d; vector <int> Tab(d*(d+1)+1); for(int i=1; i<=m; ++i){ int l, r, k; cin>>l>>r>>k; if(k==3) k=10; int left=l/d, right=r/d; if(left*d+1!=l){ if(l&d) ++left; for(int t=l; t<=left*d; ++t){ if(t>r) break; if(Tab[t]!=k&&Tab[t]<10) Tab[t]+=k;} } if(r%d!=0){ for(int t=right*d+1; t<=r; ++t) if(Tab[t]!=k&&Tab[t]<10) Tab[t]+=k; } for(int t=D+left+1; t<=D+right; ++t){ if(Tab[t]!=k&&Tab[t]<10) Tab[t]+=k; } } int result=0; for(int i=1; i<=n; ++i) if(Tab[i]+Tab[D+(i/d)+1]>=3&&Tab[i]+Tab[i]+Tab[D+(i/d)+1]<9)++result; cout<<result<<"\n"; return 0; }
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 | #include <iostream> #include <vector> #include <cmath> using namespace std; int main(){ std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); int n, m; cin>>n>>m; int d, D; if(sqrt(n)*sqrt(n)==n) d=sqrt(n); else d=sqrt(n)+1; D=d*d; vector <int> Tab(d*(d+1)+1); for(int i=1; i<=m; ++i){ int l, r, k; cin>>l>>r>>k; if(k==3) k=10; int left=l/d, right=r/d; if(left*d+1!=l){ if(l&d) ++left; for(int t=l; t<=left*d; ++t){ if(t>r) break; if(Tab[t]!=k&&Tab[t]<10) Tab[t]+=k;} } if(r%d!=0){ for(int t=right*d+1; t<=r; ++t) if(Tab[t]!=k&&Tab[t]<10) Tab[t]+=k; } for(int t=D+left+1; t<=D+right; ++t){ if(Tab[t]!=k&&Tab[t]<10) Tab[t]+=k; } } int result=0; for(int i=1; i<=n; ++i) if(Tab[i]+Tab[D+(i/d)+1]>=3&&Tab[i]+Tab[i]+Tab[D+(i/d)+1]<9)++result; cout<<result<<"\n"; return 0; } |