//var2.3
#include<iostream>
#include<algorithm>
using namespace std;
#ifdef KICIA
#define MAGIA(x) x
#else
#define MAGIA(x)
#endif // KICIA
struct Farba{
int war;
int barwa ;
bool is_pocz;
bool operator<(const Farba& inny){
return war < inny.war;
}
};
Farba rainbow[2000002];
int main(){
ios_base::sync_with_stdio(false);
int n, m, pocz, kon, barwa, licz_y=0, licz_b=0, act_b = 0, act_y = 0, act_r = 0, licz = 0, proc = 0;
bool is_good = true;
cin>>n>>m;
for (int i = 0; i<(m*2); i+=2){
cin>>pocz>>kon>>barwa;
rainbow[i].war = pocz;
rainbow[i].barwa = barwa;
rainbow[i].is_pocz = true;
rainbow[i+1].war = kon+1;
rainbow[i+1].barwa = barwa;
rainbow[i+1].is_pocz = false;
if (barwa == 1){
licz_y++;
}
if (barwa == 2){
licz_b++;
}
}
if (licz_b == 0 || licz_y == 0){
cout<<"0";
return 0;
}
std::sort(&rainbow[0], &rainbow[m*2]);
//for (int i=0; i<(m*2); ++i){cout<<rainbow[i].war<<" "<<rainbow[i].barwa<<" "<<rainbow[i].is_pocz<<endl;}
for(int i=0; i< (m*2); ++i){
if(proc == 0){
proc = rainbow[i].war;
}
if(act_y > 0 && act_b > 0 && act_r == 0/* && is_good == true*/){
//MAGIA(cout<<"war: "<<rainbow[i].war<< " proc: "<<proc<<endl; )
licz += rainbow[i].war-proc;
is_good = true;
//MAGIA(cout<<"licz: "<<licz<<endl; )
}/*else{
if(act_y > 0 && act_b > 0 && act_r == 0){
is_good = true;
}else{
is_good = false;
}
}*/
proc = rainbow[i].war;
if(rainbow[i].barwa == 1){
if(rainbow[i].is_pocz == false){
act_y--;
}
}
if(rainbow[i].barwa == 2){
if(rainbow[i].is_pocz == false){
act_b--;
}
}
if(rainbow[i].barwa == 3){
if(rainbow[i].is_pocz == false){
act_r--;
}
}
if(rainbow[i].barwa == 1){
if(rainbow[i].is_pocz == true){
act_y++;
}/*else{
act_y--;
}*/
}
if(rainbow[i].barwa == 2){
if(rainbow[i].is_pocz == true){
act_b++;
}/*else{
act_b--;
}*/
}
if(rainbow[i].barwa == 3){
if(rainbow[i].is_pocz == true){
act_r++;
}/*else{
act_r--;
}*/
}
}
cout<<licz;
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 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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | //var2.3 #include<iostream> #include<algorithm> using namespace std; #ifdef KICIA #define MAGIA(x) x #else #define MAGIA(x) #endif // KICIA struct Farba{ int war; int barwa ; bool is_pocz; bool operator<(const Farba& inny){ return war < inny.war; } }; Farba rainbow[2000002]; int main(){ ios_base::sync_with_stdio(false); int n, m, pocz, kon, barwa, licz_y=0, licz_b=0, act_b = 0, act_y = 0, act_r = 0, licz = 0, proc = 0; bool is_good = true; cin>>n>>m; for (int i = 0; i<(m*2); i+=2){ cin>>pocz>>kon>>barwa; rainbow[i].war = pocz; rainbow[i].barwa = barwa; rainbow[i].is_pocz = true; rainbow[i+1].war = kon+1; rainbow[i+1].barwa = barwa; rainbow[i+1].is_pocz = false; if (barwa == 1){ licz_y++; } if (barwa == 2){ licz_b++; } } if (licz_b == 0 || licz_y == 0){ cout<<"0"; return 0; } std::sort(&rainbow[0], &rainbow[m*2]); //for (int i=0; i<(m*2); ++i){cout<<rainbow[i].war<<" "<<rainbow[i].barwa<<" "<<rainbow[i].is_pocz<<endl;} for(int i=0; i< (m*2); ++i){ if(proc == 0){ proc = rainbow[i].war; } if(act_y > 0 && act_b > 0 && act_r == 0/* && is_good == true*/){ //MAGIA(cout<<"war: "<<rainbow[i].war<< " proc: "<<proc<<endl; ) licz += rainbow[i].war-proc; is_good = true; //MAGIA(cout<<"licz: "<<licz<<endl; ) }/*else{ if(act_y > 0 && act_b > 0 && act_r == 0){ is_good = true; }else{ is_good = false; } }*/ proc = rainbow[i].war; if(rainbow[i].barwa == 1){ if(rainbow[i].is_pocz == false){ act_y--; } } if(rainbow[i].barwa == 2){ if(rainbow[i].is_pocz == false){ act_b--; } } if(rainbow[i].barwa == 3){ if(rainbow[i].is_pocz == false){ act_r--; } } if(rainbow[i].barwa == 1){ if(rainbow[i].is_pocz == true){ act_y++; }/*else{ act_y--; }*/ } if(rainbow[i].barwa == 2){ if(rainbow[i].is_pocz == true){ act_b++; }/*else{ act_b--; }*/ } if(rainbow[i].barwa == 3){ if(rainbow[i].is_pocz == true){ act_r++; }/*else{ act_r--; }*/ } } cout<<licz; return 0; } |
English