#include <bits/stdc++.h> using namespace std; struct farba { int poz; bool on; int farb; }; farba mf(int a,bool b, int c) { farba res; res.poz=a; res.on=b; res.farb=c; return res; } bool cmp(const farba &a, const farba &b) { return a.poz<b.poz; } farba tab[2000200]; int ilefar[4]; int main() { ios::sync_with_stdio(0); int n,q; cin>>n>>q; for(int i = 0 ;i < q ;i ++) { int a,b,c; cin>>a>>b>>c; tab[i]=mf(a,1,c); tab[i+q]=mf(b+1,0,c); } sort(tab, tab+(2*q),cmp); int i=0,ost=0,w=0; bool ziel=0; //cout<<endl; //for(int i = 0; i < 2*q ;i ++) //cout<<tab[i].poz<<" "<<tab[i].on<<" "<<tab[i].farb<<endl; while(i<2*q) { if(ziel)w+=tab[i].poz-ost-1; ost=tab[i].poz; while(tab[i].poz==ost) { if(tab[i].on==1)ilefar[tab[i].farb]++; else ilefar[tab[i].farb]--; i++; } if(ilefar[1]>0&&ilefar[2]>0&&ilefar[3]==0) { w++; ziel=1; } else ziel=0; if(tab[i].poz==ost)i++; } cout<<w; }
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 | #include <bits/stdc++.h> using namespace std; struct farba { int poz; bool on; int farb; }; farba mf(int a,bool b, int c) { farba res; res.poz=a; res.on=b; res.farb=c; return res; } bool cmp(const farba &a, const farba &b) { return a.poz<b.poz; } farba tab[2000200]; int ilefar[4]; int main() { ios::sync_with_stdio(0); int n,q; cin>>n>>q; for(int i = 0 ;i < q ;i ++) { int a,b,c; cin>>a>>b>>c; tab[i]=mf(a,1,c); tab[i+q]=mf(b+1,0,c); } sort(tab, tab+(2*q),cmp); int i=0,ost=0,w=0; bool ziel=0; //cout<<endl; //for(int i = 0; i < 2*q ;i ++) //cout<<tab[i].poz<<" "<<tab[i].on<<" "<<tab[i].farb<<endl; while(i<2*q) { if(ziel)w+=tab[i].poz-ost-1; ost=tab[i].poz; while(tab[i].poz==ost) { if(tab[i].on==1)ilefar[tab[i].farb]++; else ilefar[tab[i].farb]--; i++; } if(ilefar[1]>0&&ilefar[2]>0&&ilefar[3]==0) { w++; ziel=1; } else ziel=0; if(tab[i].poz==ost)i++; } cout<<w; } |