Submission details
Task:Maalaus
Sender:dankke
Submission time:2025-11-04 09:49:33 +0200
Language:C++ (C++17)
Status:READY
Result:42
Feedback
groupverdictscore
#1ACCEPTED10
#20
#3ACCEPTED32
#40
Test results
testverdicttimegroup
#1ACCEPTED0.00 s1, 3, 4details
#2ACCEPTED0.00 s3, 4details
#3ACCEPTED0.00 s1, 3, 4details
#4--2, 4details
#5--2, 4details
#6ACCEPTED0.50 s3, 4details
#7ACCEPTED0.35 s3, 4details
#8--4details
#9--4details
#10ACCEPTED0.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>
#include <unordered_set>

using namespace std;

class Line
{
public:
    int main_color;
    unordered_set<int> off_colors_set;
    void add_off_color(int pos) {
        /*if (main_color == color)
        {
            duplicate += 1;
            return; 
        }*/
        off_colors_set.insert(pos);
        //printf("Added off color (%d) to line (%d)(%d) to pos (%d). \n", color, n, dir, pos);
        
    }
    void paint_line(int new_color){
        off_colors_set.clear();
        //printf("Size of off_colors_list: %d\n", off_colors_list.size());
        main_color = new_color;
    }
    unordered_set<int> get_colors()
    {
        return off_colors_set;
    }
};



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;


    // color list
    vector<long> colors(k, 0);

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

    vector<int> active_rows;
    vector<int> active_columns;

    // 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--;

        if (lines[direction].count(n))
        {
            //cout << "This should be printed exactly once.\n";
            lines[direction].at(n).paint_line(color);
        }
        else
        {
            Line new_line;
            new_line.paint_line(color);
            Line& new_line_ref = new_line;
            lines[direction][n] = new_line_ref;
            if (direction == ROW)
            {
                active_rows.push_back(n);
            }
            else
            {
                active_columns.push_back(n);
            }
        }
        if (direction == ROW)
        {
            for (auto &&line : active_columns)
            {
                lines[COLUMN][line].add_off_color(n);
            }
        }
        else
        {
            for (auto &&line : active_rows)
            {
                lines[ROW][line].add_off_color(n);
            }
        }
        
    }


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

    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: ACCEPTED

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

correct output
3999999991 1999999998 19999999...

user output
3999999991 1999999998 19999999...

Test 3

Group: 1, 3, 4

Verdict: ACCEPTED

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 13 0 8 7 20 0 0 10 7 

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: ACCEPTED

input
1000000000 1000000000 2000 200...

correct output
999999400 2999997760 999999118...

user output
999999400 2999997760 999999118...

Test 7

Group: 3, 4

Verdict: ACCEPTED

input
1000000000 1000000000 2000 200...

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

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

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: ACCEPTED

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 9 0 0 

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)