CSES - Aalto Competitive Programming 2024 - wk9 - Wed - Results
Submission details
Task:Ctrl-F
Sender:aalto2024j_004
Submission time:2024-11-06 16:24:59 +0200
Language:C++ (C++17)
Status:READY
Result:
Test results
testverdicttime
#10.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.00 sdetails
#7ACCEPTED0.00 sdetails
#8ACCEPTED0.00 sdetails
#9ACCEPTED0.00 sdetails
#10ACCEPTED0.00 sdetails
#11ACCEPTED0.01 sdetails
#12ACCEPTED0.00 sdetails
#13ACCEPTED0.00 sdetails
#14ACCEPTED0.00 sdetails
#15ACCEPTED0.00 sdetails
#16ACCEPTED0.00 sdetails
#17ACCEPTED0.00 sdetails
#18ACCEPTED0.00 sdetails
#19ACCEPTED0.00 sdetails
#20ACCEPTED0.00 sdetails
#21ACCEPTED0.00 sdetails
#22ACCEPTED0.00 sdetails
#23ACCEPTED0.00 sdetails
#24ACCEPTED0.00 sdetails
#25ACCEPTED0.00 sdetails
#26ACCEPTED0.00 sdetails
#27ACCEPTED0.00 sdetails
#28ACCEPTED0.00 sdetails
#29ACCEPTED0.00 sdetails
#30ACCEPTED0.00 sdetails
#31ACCEPTED0.00 sdetails
#32ACCEPTED0.00 sdetails
#33ACCEPTED0.00 sdetails
#34ACCEPTED0.00 sdetails
#35ACCEPTED0.00 sdetails
#36ACCEPTED0.00 sdetails
#37ACCEPTED0.00 sdetails
#38ACCEPTED0.00 sdetails
#39ACCEPTED0.00 sdetails
#40ACCEPTED0.00 sdetails
#41ACCEPTED0.00 sdetails
#42ACCEPTED0.00 sdetails
#43ACCEPTED0.00 sdetails
#44ACCEPTED0.00 sdetails
#45ACCEPTED0.00 sdetails
#46ACCEPTED0.00 sdetails
#47ACCEPTED0.00 sdetails
#48ACCEPTED0.00 sdetails
#49ACCEPTED0.00 sdetails
#50ACCEPTED0.00 sdetails
#51ACCEPTED0.00 sdetails
#52ACCEPTED0.00 sdetails
#53ACCEPTED0.00 sdetails
#54ACCEPTED0.00 sdetails
#55ACCEPTED0.00 sdetails
#56ACCEPTED0.00 sdetails
#57ACCEPTED0.00 sdetails
#58ACCEPTED0.00 sdetails
#59ACCEPTED0.00 sdetails
#60ACCEPTED0.00 sdetails
#61ACCEPTED0.00 sdetails
#62ACCEPTED0.00 sdetails
#63ACCEPTED0.00 sdetails
#64ACCEPTED0.00 sdetails
#65ACCEPTED0.00 sdetails
#66ACCEPTED0.00 sdetails
#67ACCEPTED0.00 sdetails
#68ACCEPTED0.00 sdetails
#69ACCEPTED0.00 sdetails
#70ACCEPTED0.00 sdetails
#71ACCEPTED0.00 sdetails
#72ACCEPTED0.00 sdetails
#73ACCEPTED0.00 sdetails
#74ACCEPTED0.00 sdetails
#75ACCEPTED0.00 sdetails
#76ACCEPTED0.00 sdetails
#77ACCEPTED0.00 sdetails
#78ACCEPTED0.00 sdetails
#79ACCEPTED0.00 sdetails
#80ACCEPTED0.00 sdetails
#81ACCEPTED0.00 sdetails
#82ACCEPTED0.00 sdetails
#83ACCEPTED0.00 sdetails
#84ACCEPTED0.01 sdetails
#85ACCEPTED0.01 sdetails
#86ACCEPTED0.01 sdetails
#87ACCEPTED0.01 sdetails
#88ACCEPTED0.01 sdetails
#89ACCEPTED0.01 sdetails
#90ACCEPTED0.01 sdetails
#91ACCEPTED0.01 sdetails
#92ACCEPTED0.01 sdetails
#93ACCEPTED0.01 sdetails

Compiler report

input/code.cpp: In function 'long long int ford_fulkerson(std::vector<std::vector<long long int> >&, int, int)':
input/code.cpp:137:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  137 |         for (int i = 1; i < path_reversed.size(); i++)
      |                         ~~^~~~~~~~~~~~~~~~~~~~~~

Code

#include <bits/stdc++.h>

#define REP(i, a, b) for (int i = a; i < b; i++)

// Type Aliases for 1D and 2D vectors with initialization
#define vll(n, val) vector<long long>(n, val) // 1D vector of long longs with size n, initialized to val
#define ll long long
#define vvi(n, m, val) vector<vector<int>>(n, vector<int>(m, val))              // 2D vector of ints (n x m), initialized to val
#define vvll(n, m, val) vector<vector<long long>>(n, vector<long long>(m, val)) // 2D vector of long longs (n x m), initialized to val

using namespace std;

void print_vector(vector<int> &x)
{
    for (int v : x)
    {
        cout << v << " ";
    }
    cout << "\n";
}

void print_matrix(vector<vector<int>> &matrix)
{
    cout << "\n"
         << "----------------" << "\n";
    for (vector<int> row : matrix)
    {
        print_vector(row);
    }
    cout << "\n"
         << "----------------" << "\n";
}

int calc_max_digit(int n)
{
    int max_digit = 0;
    while (n > 0 && max_digit < 9)
    {
        int digit = n % 10;
        if (digit > max_digit)
        {
            max_digit = digit;
        }
        n /= 10;
    }
    return max_digit;
}

// edges as edge list for outgoing node as pairs (end, cost)
vector<ll> dijkstras(int start_point, vector<vector<pair<int, int>>> edges)
{
    int n = edges.size();
    vector<bool> processed(n, false);
    vector<ll> distances(n, LLONG_MAX);
    distances[start_point] = 0;
    priority_queue<pair<ll, int>> pq;
    pq.push({0, start_point});
    while (!pq.empty())
    {
        int curr = pq.top().second;
        pq.pop();
        if (processed[curr])
        {
            continue;
        }
        processed[curr] = true;
        ll distance = distances[curr];

        for (pair<int, int> edge : edges[curr])
        {

            if (distance + edge.second < distances[edge.first])
            {
                distances[edge.first] = distance + edge.second;
                pq.push({-distances[edge.first], edge.first});
            }
        }
    }
    return distances;
}

int bfs_edmondson_karp(const vector<vector<ll>> &connections,
                       const int source, const int target, vector<int> &path_reversed)
{
    int n = connections.size();

    queue<pair<int, ll>> queue;
    queue.push({source, LLONG_MAX});
    vector<int> predecessor(n, -2);
    predecessor[source] = -1;

    while (!queue.empty())
    {
        int current = queue.front().first;
        ll current_bottleneck = queue.front().second;
        queue.pop();

        if (current == target)
        {
            while (current != -1)
            {
                path_reversed.push_back(current);
                current = predecessor[current];
            }
            return current_bottleneck;
        }

        for (int edge_end = 0; edge_end < n; edge_end++)
        {
            ll edge_cap = connections[current][edge_end];
            if (edge_cap > 0 && predecessor[edge_end] == -2)
            {
                predecessor[edge_end] = current;
                queue.push({edge_end, min(current_bottleneck, edge_cap)});
            }
        }
    }

    return -1;
}

ll ford_fulkerson(vector<vector<ll>> &residual_graph, const int source, const int target)
{
    ll flow = 0;

    while (true)
    {
        vector<int> path_reversed;
        int path_capacity = bfs_edmondson_karp(residual_graph, source, target, path_reversed);

        if (path_capacity < 0)
        {
            break;
        }

        flow += path_capacity;
        for (int i = 1; i < path_reversed.size(); i++)
        {
            int edge_end = path_reversed[i - 1];
            int edge_start = path_reversed[i];
            // reduce forwards edge
            residual_graph[edge_start][edge_end] -= path_capacity;
            assert(residual_graph[edge_start][edge_end] >= 0);
            // add to backwards edge
            residual_graph[edge_end][edge_start] += path_capacity;
            assert(residual_graph[edge_end][edge_start] >= 0);
        }
    }
    return flow;
}

bool dfs(int n, const vector<vector<int>> snakes, vector<bool> &visited, vector<int> path, int start, int target)
{
    if (start == target)
    {
        path.push_back(target);
        return true;
    }
    for (int i = n; n >= 1; n--)
    {
        if (!visited[i] && !snakes[start][i])
        {
            if (dfs(n, snakes, visited, path, i, target))
            {
                path.push_back(start);
                return true;
            }
        }
    }
    return false;
}

vector<int> z(const string &s)
{
    int n = s.size();
    vector<int> z(n);
    int x = 0, y = 0;
    for (int k = 1; k < n; k++)
    {
        z[k] = max(0, min(z[k - x], y - k + 1));
        while (k + z[k] < n && s[z[k]] == s[k + z[k]])
        {
            // while there is a potential longer match and characters coincide
            x = k;
            y = k + z[k];
            z[k]++;
        }
    }
    return z;
}

void print_letter_x_times(char letter, int count)
{
    for (int i = 0; i < count; i++)
    {
        cout << letter;
    }
}

int main()
{
    string a, b;
    cin >> a >> b;

    int a_len = a.size();
    int b_len = b.size();

    string search_string = a + "#" + b;
    vector<int> z_array = z(search_string);

    vector<int> result;

    for (int i = 1; i < b_len; i++)
    {
        if (z_array[a_len + i] >= a_len)
        {
            result.push_back(i);
        }
    }
    cout << result.size() << "\n";

    for (int pos : result)
    {
        cout << pos << " ";
    }
    cout << endl;
}

Test details

Test 1

Verdict:

input
q q

correct output
1

user output
0

Test 2

Verdict: ACCEPTED

input
wr wn

correct output
0

user output
0

Test 3

Verdict: ACCEPTED

input
sy sy

correct output
1

user output
1

Test 4

Verdict: ACCEPTED

input
su sub

correct output
1

user output
1

Test 5

Verdict: ACCEPTED

input
nrd yjm

correct output
0

user output
0

Test 6

Verdict: ACCEPTED

input
a bbbb

correct output
0

user output
0

Test 7

Verdict: ACCEPTED

input
mtn mtnr

correct output
1

user output
1

Test 8

Verdict: ACCEPTED

input
bnp lbnpr

correct output
1

user output
1

Test 9

Verdict: ACCEPTED

input
bab aabbb

correct output
0

user output
0

Test 10

Verdict: ACCEPTED

input
aba babab

correct output
1

user output
1

Test 11

Verdict: ACCEPTED

input
aabb bbaab

correct output
0

user output
0

Test 12

Verdict: ACCEPTED

input
gx oqxwd

correct output
0

user output
0

Test 13

Verdict: ACCEPTED

input
noe noemx

correct output
1

user output
1

Test 14

Verdict: ACCEPTED

input
bbbbbabb aaababaaab

correct output
0

user output
0

Test 15

Verdict: ACCEPTED

input
caaac aaababbcbc

correct output
0

user output
0

Test 16

Verdict: ACCEPTED

input
ayoyl mkiiefsqdh

correct output
0

user output
0

Test 17

Verdict: ACCEPTED

input
svhdno xlxadbfgbc

correct output
0

user output
0

Test 18

Verdict: ACCEPTED

input
accc bcbaacaaca

correct output
0

user output
0

Test 19

Verdict: ACCEPTED

input
wvf jxzmcpktjn

correct output
0

user output
0

Test 20

Verdict: ACCEPTED

input
ac aabacbabbb

correct output
1

user output
1

Test 21

Verdict: ACCEPTED

input
l uilzslziog

correct output
2
3 6 

user output
2
3 6 

Test 22

Verdict: ACCEPTED

input
zgwjnvgka pltkknwmyo

correct output
0

user output
0

Test 23

Verdict: ACCEPTED

input
d nmmadidafw

correct output
2
5 7 

user output
2
5 7 

Test 24

Verdict: ACCEPTED

input
amqltvmp amqltvmpfa

correct output
1

user output
1

Test 25

Verdict: ACCEPTED

input
ar mfsykcmfax

correct output
0

user output
0

Test 26

Verdict: ACCEPTED

input
xa twgcnsajxa

correct output
1

user output
1

Test 27

Verdict: ACCEPTED

input
bbb babbabbbbb

correct output
3
6 7 8 

user output
3
6 7 8 

Test 28

Verdict: ACCEPTED

input
bcbaa aacabaabbb

correct output
0

user output
0

Test 29

Verdict: ACCEPTED

input
ba abcacbaaca

correct output
1

user output
1

Test 30

Verdict: ACCEPTED

input
djs nboibdjsfe

correct output
1

user output
1

Test 31

Verdict: ACCEPTED

input
nve xbuukrcqfo

correct output
0

user output
0

Test 32

Verdict: ACCEPTED

input
nlwgexw ftarlzogwa

correct output
0

user output
0

Test 33

Verdict: ACCEPTED

input
i tkgsdgircb

correct output
1

user output
1

Test 34

Verdict: ACCEPTED

input
ccccba bccbcbabca

correct output
0

user output
0

Test 35

Verdict: ACCEPTED

input
bba ababaaabba

correct output
1

user output
1

Test 36

Verdict: ACCEPTED

input
babbb ababaabaaa

correct output
0

user output
0

Test 37

Verdict: ACCEPTED

input
abbabaabaa aaabbaaabb

correct output
0

user output
0

Test 38

Verdict: ACCEPTED

input
sbzifzjntu sbzifzjntu

correct output
1

user output
1

Test 39

Verdict: ACCEPTED

input
aaaaaa aaabbaabaa

correct output
0

user output
0

Test 40

Verdict: ACCEPTED

input
abbbab aaaababbba

correct output
0

user output
0

Test 41

Verdict: ACCEPTED

input
jjhzv vxtmwjjhzv

correct output
1

user output
1

Test 42

Verdict: ACCEPTED

input
ohdekkui naemwyyvzo

correct output
0

user output
0

Test 43

Verdict: ACCEPTED

input
ba ccbbabaccc

correct output
2
4 6 

user output
2
4 6 

Test 44

Verdict: ACCEPTED

input
qltvmpfafstgegcdrryvainxvfpasw...

correct output
1

user output
1

Test 45

Verdict: ACCEPTED

input
armfsykcmfaxmvycwxs scnxuwpetq...

correct output
0

user output
0

Test 46

Verdict: ACCEPTED

input
iazfqzyetdvokklp twgcnsajxaxha...

correct output
1
63 

user output
1
63 

Test 47

Verdict: ACCEPTED

input
bbb babbabbbbbbabaabababbaaaba...

correct output
14
6 7 8 9 52 53 58 59 64 76 77 7...

user output
14
6 7 8 9 52 53 58 59 64 76 77 7...

Test 48

Verdict: ACCEPTED

input
bcbaa aacabaabbbaccbbabcaacaaa...

correct output
0

user output
0

Test 49

Verdict: ACCEPTED

input
ba abcacbaacacaaaccaabcbcccbac...

correct output
11
6 25 38 44 51 70 72 77 92 94 9...

user output
11
6 25 38 44 51 70 72 77 92 94 9...

Test 50

Verdict: ACCEPTED

input
boibdjsferqewbvyroecpso nboibd...

correct output
1

user output
1

Test 51

Verdict: ACCEPTED

input
nvexbuukrcqfoqbwjbytbowawfbmqh...

correct output
0

user output
0

Test 52

Verdict: ACCEPTED

input
nlwgexwftarlzogwazqiwotpahcqhf...

correct output
0

user output
0

Test 53

Verdict: ACCEPTED

input
xjjeioibiv tkgsdgircbrduazzqpf...

correct output
1
66 

user output
1
66 

Test 54

Verdict: ACCEPTED

input
ccccba bccbcbabcacaccccbcccaac...

correct output
0

user output
0

Test 55

Verdict: ACCEPTED

input
bba ababaaabbaabbaaabaabaaaabb...

correct output
11
8 12 26 30 37 42 66 72 82 88 9...

user output
11
8 12 26 30 37 42 66 72 82 88 9...

Test 56

Verdict: ACCEPTED

input
babbb ababaabaaabbaabababbaaaa...

correct output
2
46 61 

user output
2
46 61 

Test 57

Verdict: ACCEPTED

input
abbabaabaa aaabbaaabbbbaabbabb...

correct output
0

user output
0

Test 58

Verdict: ACCEPTED

input
sbzifzjntuzmiqdhjoiajrskxxntgh...

correct output
1

user output
1

Test 59

Verdict: ACCEPTED

input
aaaaaa aaabbaabaababaaabbaabbb...

correct output
0

user output
0

Test 60

Verdict: ACCEPTED

input
abbbab aaaababbbaaabbaaabaabab...

correct output
0

user output
0

Test 61

Verdict: ACCEPTED

input
ghauoeqbgszeeppknnlffspwvyytbm...

correct output
1
40 

user output
1
40 

Test 62

Verdict: ACCEPTED

input
ohdekkuinaemwyyvzofxzwgwaryuxm...

correct output
0

user output
0

Test 63

Verdict: ACCEPTED

input
ba ccbbabaccccccccaacaabbbbaaa...

correct output
9
4 6 24 35 54 72 76 83 91 

user output
9
4 6 24 35 54 72 76 83 91 

Test 64

Verdict: ACCEPTED

input
qltvmpfafstgegcdrryvainxvfpasw...

correct output
1

user output
1

Test 65

Verdict: ACCEPTED

input
armfsykcmfaxmvycwxsscnxuwpetqr...

correct output
0

user output
0

Test 66

Verdict: ACCEPTED

input
ljsoejwqaebfjygmnrdcqoowvcgsei...

correct output
1
569 

user output
1
569 

Test 67

Verdict: ACCEPTED

input
bbb babbabbbbbbabaabababbaaaba...

correct output
122
6 7 8 9 52 53 58 59 64 76 77 7...

user output
122
6 7 8 9 52 53 58 59 64 76 77 7...
Truncated

Test 68

Verdict: ACCEPTED

input
bcbaa aacabaabbbaccbbabcaacaaa...

correct output
2
128 811 

user output
2
128 811 

Test 69

Verdict: ACCEPTED

input
ba abcacbaacacaaaccaabcbcccbac...

correct output
115
6 25 38 44 51 70 72 77 92 94 9...

user output
115
6 25 38 44 51 70 72 77 92 94 9...
Truncated

Test 70

Verdict: ACCEPTED

input
xbdpqykclzyjerkdnyfqrynxbloyps...

correct output
1
174 

user output
1
174 

Test 71

Verdict: ACCEPTED

input
nvexbuukrcqfoqbwjbytbowawfbmqh...

correct output
0

user output
0

Test 72

Verdict: ACCEPTED

input
nlwgexwftarlzogwazqiwotpahcqhf...

correct output
0

user output
0

Test 73

Verdict: ACCEPTED

input
dqzgitxhpsubvrsocoxjjeioibivfs...

correct output
1
48 

user output
1
48 

Test 74

Verdict: ACCEPTED

input
ccccba bccbcbabcacaccccbcccaac...

correct output
3
229 277 593 

user output
3
229 277 593 

Test 75

Verdict: ACCEPTED

input
bba ababaaabbaabbaaabaabaaaabb...

correct output
121
8 12 26 30 37 42 66 72 82 88 9...

user output
121
8 12 26 30 37 42 66 72 82 88 9...
Truncated

Test 76

Verdict: ACCEPTED

input
babbb ababaabaaabbaabababbaaaa...

correct output
29
46 61 118 126 252 318 330 350 ...

user output
29
46 61 118 126 252 318 330 350 ...
Truncated

Test 77

Verdict: ACCEPTED

input
abbabaabaa aaabbaaabbbbaabbabb...

correct output
2
167 584 

user output
2
167 584 

Test 78

Verdict: ACCEPTED

input
yxlvjhoqnrjzixyyxqypyfcmeujvyn...

correct output
1
36 

user output
1
36 

Test 79

Verdict: ACCEPTED

input
aaaaaa aaabbaabaababaaabbaabbb...

correct output
16
147 148 222 223 224 225 303 30...

user output
16
147 148 222 223 224 225 303 30...

Test 80

Verdict: ACCEPTED

input
abbbab aaaababbbaaabbaaabaabab...

correct output
13
208 278 449 539 572 637 698 82...

user output
13
208 278 449 539 572 637 698 82...

Test 81

Verdict: ACCEPTED

input
tkjzptqkkzkyuknjbtdhbxzbvdynoe...

correct output
1
398 

user output
1
398 

Test 82

Verdict: ACCEPTED

input
ohdekkuinaemwyyvzofxzwgwaryuxm...

correct output
0

user output
0

Test 83

Verdict: ACCEPTED

input
ba ccbbabaccccccccaacaabbbbaaa...

correct output
106
4 6 24 35 54 72 76 83 91 120 1...

user output
106
4 6 24 35 54 72 76 83 91 120 1...
Truncated

Test 84

Verdict: ACCEPTED

input
uimfxocfupiquprsfvwrktflasqzwg...

correct output
1
12309 

user output
1
12309 

Test 85

Verdict: ACCEPTED

input
armfsykcmfaxmvycwxsscnxuwpetqr...

correct output
0

user output
0

Test 86

Verdict: ACCEPTED

input
bvifyeheqbketqmweyvfwxslczpinq...

correct output
1
72135 

user output
1
72135 

Test 87

Verdict: ACCEPTED

input
bbb babbabbbbbbabaabababbaaaba...

correct output
12448
6 7 8 9 52 53 58 59 64 76 77 7...

user output
12448
6 7 8 9 52 53 58 59 64 76 77 7...
Truncated

Test 88

Verdict: ACCEPTED

input
bcbaa aacabaabbbaccbbabcaacaaa...

correct output
415
128 811 1185 1404 1540 1595 18...

user output
415
128 811 1185 1404 1540 1595 18...
Truncated

Test 89

Verdict: ACCEPTED

input
ba abcacbaacacaaaccaabcbcccbac...

correct output
22302
6 25 38 44 51 70 72 77 92 94 9...

user output
22302
6 25 38 44 51 70 72 77 92 94 9...
Truncated

Test 90

Verdict: ACCEPTED

input
hdoncwccngxcinaaxlqqaqeeddicpb...

correct output
1
25985 

user output
1
25985 

Test 91

Verdict: ACCEPTED

input
nvexbuukrcqfoqbwjbytbowawfbmqh...

correct output
0

user output
0

Test 92

Verdict: ACCEPTED

input
nlwgexwftarlzogwazqiwotpahcqhf...

correct output
0

user output
0

Test 93

Verdict: ACCEPTED

input
psvihsxqpawhwrzhxgbpkgaeoxkrtp...

correct output
1
108381 

user output
1
108381