Submission details
Task:Maalaus
Sender:dankke
Submission time:2025-11-03 20:00:03 +0200
Language:C++ (C++17)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
#40
Test results
testverdicttimegroup
#1ACCEPTED0.00 s1, 3, 4details
#20.00 s3, 4details
#30.00 s1, 3, 4details
#4--2, 4details
#5--2, 4details
#60.59 s3, 4details
#70.46 s3, 4details
#8--4details
#9--4details
#100.00 s1, 3, 4details
#11ACCEPTED0.00 s1, 3, 4details
#12--2, 4details
#13--2, 4details
#14--4details
#15--4details
#16--4details
#17--4details

Code

#include <iostream>
#include <string>
#include <vector>
#include <map>

using namespace std;

class Line
{
public:
    int main_color, n, dir;
    string test;
    vector<int> off_colors_list = {};
    map<int, int> off_colors = {}; // value is the place and value is which color
    void add_off_color(int pos, int color) {
        if (color == main_color) 
        {
            return;
        }
        
        if (!off_colors.count(pos))
        {
            off_colors_list.push_back(color);
        }
        off_colors[pos] = color;
        //printf("Added off color (%d) to line (%d)(%d) to pos (%d). \n", color, n, dir, pos);
        
    }
    void paint_line(int new_color){
        //printf("Painted line (%d)(%d).\n", n, dir);
        off_colors.clear();
        off_colors_list.clear();
        //printf("Size of off_colors_list: %d\n", off_colors_list.size());
        main_color = new_color;
    }
    vector<int> get_color_list()
    {
        return off_colors_list;
    }
};



int main()
{   
    const int ROW = -1;
    const int COLUMN = 1;
    // Get starting values 
    int n, m, k, q;
    cin >> n;
    cin >> m;
    cin >> k;
    cin >> q;

    vector<vector<int>> operations;
    // get operations
    for (int i = 0; i < q; i++)
    {
        int direction, n, color;
        string dir;
        cin >> dir;
        if (dir == "R")
        {
            direction = ROW;
        }
        else
        {
            direction = COLUMN;
        }
        cin >> n;
        n--;
        cin >> color;
        color--;
        operations.push_back({direction, n, color});
    }
    // color list
    vector<long> colors(k, 0);

    map<int, map<int, Line>> lines;
    lines[ROW] = {};
    lines[COLUMN] = {};

    vector<Line> rows;
    vector<Line> columns;
    vector<int> active_rows;
    vector<int> active_columns;



    for (auto && operation : operations)
    {
        
        if (lines[operation[0]].count(operation[1]))
        {
            //cout << "This should be printed exactly once.\n";
            lines[operation[0]].at(operation[1]).paint_line(operation[2]);
        }
        else
        {
            Line new_line;
            new_line.n = operation[1];
            new_line.dir = operation[0];
            new_line.paint_line(operation[2]);
            Line& new_line_ref = new_line;
            lines[operation[0]][operation[1]] = new_line_ref;
            if (operation[0] == ROW)
            {
                rows.push_back(lines[operation[0]][operation[1]]);
                active_rows.push_back(operation[1]);
            }
            else
            {
                columns.push_back(lines[operation[0]][operation[1]]);
                active_columns.push_back(operation[1]);
            }
            lines[operation[0]][operation[1]].test = "Does this work?";
        }
        if (operation[0] == ROW)
        {
            for (auto &&line : active_columns)
            {
                lines[COLUMN][line].add_off_color(operation[1], operation[2]);
            }
        }
        else
        {
            for (auto &&line : active_rows)
            {
                lines[ROW][line].add_off_color(operation[1], operation[2]);
            }
        }

    }
    // calculate number of colors
    for (auto &&active : active_rows)
    {
        //printf("row (%d) off colors: %d \n", lines[ROW][active].n, lines[ROW][active].get_color_list().size());
        colors[lines[ROW][active].main_color] += (m - lines[ROW][active].get_color_list().size());
        //for (auto &&off_color : lines[ROW][active].get_color_list())
        //{
        //    printf("offcolor: %d\n", off_color);
        //    colors[off_color] += 1;
        //}
    }
    for (auto &&active : active_columns)
    {
        colors[lines[COLUMN][active].main_color] += (n - lines[COLUMN][active].get_color_list().size());
        //printf("column (%d) off colors: %d\n", lines[COLUMN][active].n, lines[COLUMN][active].get_color_list().size());
        //for (auto &&off_color : lines[COLUMN][active].get_color_list())
        //{
        //    printf("offcolor: %d\n", off_color);
        //    colors[off_color] += 1;
        //}
    }

    for (auto &&color : colors)
    {
        cout << color << " ";
    }
    
    
    
    

    return 0;
}

Test details

Test 1 (public)

Group: 1, 3, 4

Verdict: ACCEPTED

input
3 4 4 4
R 1 1
C 3 4
R 2 2
R 1 1

correct output
4 4 0 1

user output
4 4 0 1 

Test 2 (public)

Group: 3, 4

Verdict:

input
1000000000 1000000000 5 10
C 70724881 4
C 290904744 1
C 569311326 5
R 896293092 1
...

correct output
3999999991 1999999998 19999999...

user output
3999999994 1999999999 19999999...

Feedback: Incorrect character on line 1 col 10: expected "3999999991", got "3999999994"

Test 3

Group: 1, 3, 4

Verdict:

input
10 10 10 10
R 10 8
C 1 2
R 10 2
R 1 4
...

correct output
0 13 0 8 7 20 0 0 10 7

user output
0 14 0 8 7 20 0 0 10 7 

Feedback: Incorrect character on line 1 col 4: expected "13", got "14"

Test 4

Group: 2, 4

Verdict:

input
1000000000 1000000000 1 200000
R 185082082 1
C 549662476 1
R 484749097 1
R 330334821 1
...

correct output
199984000629575

user output
(empty)

Test 5

Group: 2, 4

Verdict:

input
1000000000 1000000000 1 200000
C 354072394 1
C 221236382 1
C 63527838 1
C 538599654 1
...

correct output
126261014543986

user output
(empty)

Test 6

Group: 3, 4

Verdict:

input
1000000000 1000000000 2000 200...

correct output
999999400 2999997760 999999118...

user output
999999400 2999997762 999999118...

Feedback: Incorrect character on line 1 col 20: expected "2999997760", got "2999997762"

Test 7

Group: 3, 4

Verdict:

input
1000000000 1000000000 2000 200...

correct output
999999481 0 999999445 0 0 0 0 ...

user output
999999481 0 999999445 0 0 0 0 ...

Feedback: Incorrect character on line 1 col 71: expected "1999999749", got "1999999750"

Test 8

Group: 4

Verdict:

input
1000000000 1000000000 200000 2...

correct output
0 0 999997829 0 1999872519 199...

user output
(empty)

Test 9

Group: 4

Verdict:

input
1000000000 1000000000 200000 2...

correct output
999986843 0 0 999966411 999971...

user output
(empty)

Test 10

Group: 1, 3, 4

Verdict:

input
1 10 10 10
C 1 10
R 1 4
C 9 3
R 1 7
...

correct output
1 0 0 0 0 0 0 9 0 0

user output
1 0 0 0 0 0 0 10 0 0 

Feedback: Incorrect character on line 1 col 15: expected "9", got "10"

Test 11

Group: 1, 3, 4

Verdict: ACCEPTED

input
10 1 10 10
R 4 6
R 5 1
R 4 2
R 3 9
...

correct output
0 0 0 0 0 0 0 10 0 0

user output
0 0 0 0 0 0 0 10 0 0 

Test 12

Group: 2, 4

Verdict:

input
1 1000000000 1 200000
C 298761159 1
R 1 1
C 831911362 1
C 25171734 1
...

correct output
1000000000

user output
(empty)

Test 13

Group: 2, 4

Verdict:

input
1000000000 1 1 200000
R 68306849 1
C 1 1
C 1 1
R 485427101 1
...

correct output
1000000000

user output
(empty)

Test 14

Group: 4

Verdict:

input
1000000000 1000000000 100 2000...

correct output
2003899199298 2016897879262 20...

user output
(empty)

Test 15

Group: 4

Verdict:

input
1000000000 1000000000 100 2000...

correct output
1267960483393 1326958437362 12...

user output
(empty)

Test 16

Group: 4

Verdict:

input
1000000000 1000000000 10000 20...

correct output
26998778013 13999380552 239989...

user output
(empty)

Test 17

Group: 4

Verdict:

input
1000000000 1000000000 10000 20...

correct output
7999699356 8999760379 12999665...

user output
(empty)