Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using lli = long long;
- using pi = pair <int, int>;
- using pii = pair <int, pi>;
- int keep[15];
- void cal(int x, int opr){
- if(x == 1) return;
- if(x == 4) keep[2] += (2 * opr);
- else if(x == 6) {
- keep[2] += opr;
- keep[3] += opr;
- }
- else if(x == 8) keep[2] += (3 * opr);
- else if(x == 9) keep[3] += (2 * opr);
- else if(x == 10) {
- keep[2] += opr;
- keep[5] += opr;
- }
- else keep[x] += opr;
- }
- int main(){
- int m, n;
- scanf("%d%d", &m, &n);
- vector <pii> event;
- int End = 0;
- for(int i=1;i<=m;i++){
- int x, s, t;
- scanf("%d%d%d", &x, &s, &t);
- event.push_back({s+1, {1, x}});
- event.push_back({t+2, {-1, x}});
- End = max(End, t+2);
- }
- sort(event.begin(), event.end());
- int prev = 0;
- lli mx = 0, cnt = 0;
- for(auto e: event){
- int x, idx, opr;
- idx = e.first;
- opr = e.second.first;
- x = e.second.second;
- if(idx != prev){
- lli sum = 1;
- for(int i=1;i<=7;i++) sum *= (lli)(keep[i] + 1);
- if(sum > mx){
- mx = sum;
- cnt = (lli) (idx - prev);
- }
- else if(sum == mx){
- cnt += (lli) (idx - prev);
- }
- }
- prev = idx;
- cal(x, opr);
- }
- lli sum = 1;
- for(int i=1;i<=7;i++){
- sum *= (lli)(keep[i] + 1);
- }
- if(sum > mx){
- mx = sum;
- cnt = (lli)(End - prev);
- }
- else if(sum == mx){
- cnt += (lli)(End - prev);
- }
- printf("%lld %lld", mx, cnt);
- return 0;
- }
Add Comment
Please, Sign In to add comment