#include <cstdio>
const char WHITE = 0x00, YELLOW = 0x01, BLUE = 0x02, RED = 0x04,
GREEN = BLUE | YELLOW, ORANGE = YELLOW | RED, VIOLET = BLUE | RED, BROWN = YELLOW | BLUE | RED, PROCESSED = 0x10;
const char NUM_TO_COLOUR[] = { YELLOW, BLUE, RED }; //NUM_TO_COLOUR[k - 1] = COLOUR_CODE
char cans[1000000]; //as global variable because it will be zero initialized = as WHITE colour
typedef long long unsigned llu;
int main()
{
llu n, m, l, r, k, counter = 0; //n - liczba puszek z farba, m - ilosc operacji, l - lewa strona przedialu, r - prawa strona przedzialu, k - kolor barwnika, counter - licznik puszek z zielona farb¹
char current_dye = WHITE;
scanf("%llu %llu", &n, &m); //first input line;
for (llu i = 0; i < m; i++) {
scanf("%llu %llu %llu", &l, &r, &k); //current operation
current_dye = NUM_TO_COLOUR[k - 1]; //get current dye colour once in every operation
for (llu j = l - 1; j < r; j++) {
cans[j] |= current_dye; //add current dye to paint can = OR acctual can content with dye colour code
}
}
for(llu i = 0; i < n; i++) {
if(cans[i] == GREEN)
++counter;
}
printf("%llu", counter);
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 | #include <cstdio> const char WHITE = 0x00, YELLOW = 0x01, BLUE = 0x02, RED = 0x04, GREEN = BLUE | YELLOW, ORANGE = YELLOW | RED, VIOLET = BLUE | RED, BROWN = YELLOW | BLUE | RED, PROCESSED = 0x10; const char NUM_TO_COLOUR[] = { YELLOW, BLUE, RED }; //NUM_TO_COLOUR[k - 1] = COLOUR_CODE char cans[1000000]; //as global variable because it will be zero initialized = as WHITE colour typedef long long unsigned llu; int main() { llu n, m, l, r, k, counter = 0; //n - liczba puszek z farba, m - ilosc operacji, l - lewa strona przedialu, r - prawa strona przedzialu, k - kolor barwnika, counter - licznik puszek z zielona farb¹ char current_dye = WHITE; scanf("%llu %llu", &n, &m); //first input line; for (llu i = 0; i < m; i++) { scanf("%llu %llu %llu", &l, &r, &k); //current operation current_dye = NUM_TO_COLOUR[k - 1]; //get current dye colour once in every operation for (llu j = l - 1; j < r; j++) { cans[j] |= current_dye; //add current dye to paint can = OR acctual can content with dye colour code } } for(llu i = 0; i < n; i++) { if(cans[i] == GREEN) ++counter; } printf("%llu", counter); return 0; } |
English