#include <iostream>
#include <string>
#include <cstring>
std::string split(std::string line, int word_index, char split = ' ')
{
if(line.length() < 3 || word_index > line.length())
{
return "-1";
}
int c = 0;
std::string to_return = "";
for (int i = 0; i < line.length(); i++)
{
if (line[i] == split && c != word_index)
{
c++;
}
else if(c == word_index)
{
to_return += line[i];
}
else if (line[i] == split && c == word_index)
{
return to_return;
}
}
return to_return;
}
int main()
{
std::string line;
getline(std::cin, line);
int licz_puszek = stoi(split(line, 0)); //Liczba puszek
int licz_operacji = stoi(split(line, 1)); //Liczba operacji
char* puszkiR = new char[1000000];
char* puszkiG = new char[1000000];
char* puszkiB = new char[1000000];
memset(puszkiR, '0', 1000000 * sizeof(*puszkiR));
memset(puszkiG, '0', 1000000 * sizeof(*puszkiG));
memset(puszkiB, '0', 1000000 * sizeof(*puszkiB));
for (int i = 0; i < licz_operacji; i++)
{
getline(std::cin, line);
char dye = split(line, 2)[0];
int start = stoi(split(line, 0)) - 1;
int len = stoi(split(line, 1)) - stoi(split(line, 0)) + 1;
if (dye == '1')
{
memset(&puszkiR[start], '1', len * sizeof(*puszkiR));
}
else if (dye == '2')
{
memset(&puszkiG[start], '1', len * sizeof(*puszkiG));
}
else if (dye == '3')
{
memset(&puszkiB[start], '1', len * sizeof(*puszkiB));
}
}
int c = 0;
for (int i = 0; i < licz_puszek; i++)
{
if(puszkiR[i] == '1' && puszkiG[i] == '1' && puszkiB[i] == '0')
{
c++;
}
}
std::cout << c;
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 | #include <iostream> #include <string> #include <cstring> std::string split(std::string line, int word_index, char split = ' ') { if(line.length() < 3 || word_index > line.length()) { return "-1"; } int c = 0; std::string to_return = ""; for (int i = 0; i < line.length(); i++) { if (line[i] == split && c != word_index) { c++; } else if(c == word_index) { to_return += line[i]; } else if (line[i] == split && c == word_index) { return to_return; } } return to_return; } int main() { std::string line; getline(std::cin, line); int licz_puszek = stoi(split(line, 0)); //Liczba puszek int licz_operacji = stoi(split(line, 1)); //Liczba operacji char* puszkiR = new char[1000000]; char* puszkiG = new char[1000000]; char* puszkiB = new char[1000000]; memset(puszkiR, '0', 1000000 * sizeof(*puszkiR)); memset(puszkiG, '0', 1000000 * sizeof(*puszkiG)); memset(puszkiB, '0', 1000000 * sizeof(*puszkiB)); for (int i = 0; i < licz_operacji; i++) { getline(std::cin, line); char dye = split(line, 2)[0]; int start = stoi(split(line, 0)) - 1; int len = stoi(split(line, 1)) - stoi(split(line, 0)) + 1; if (dye == '1') { memset(&puszkiR[start], '1', len * sizeof(*puszkiR)); } else if (dye == '2') { memset(&puszkiG[start], '1', len * sizeof(*puszkiG)); } else if (dye == '3') { memset(&puszkiB[start], '1', len * sizeof(*puszkiB)); } } int c = 0; for (int i = 0; i < licz_puszek; i++) { if(puszkiR[i] == '1' && puszkiG[i] == '1' && puszkiB[i] == '0') { c++; } } std::cout << c; return 0; } |
English