Submission #1063481

# Submission time Handle Problem Language Result Execution time Memory
1063481 2024-08-17T19:15:54 Z Andrey Stray Cat (JOI20_stray) C++14
15 / 100
38 ms 24936 KB
#include "Anthony.h"
#include<bits/stdc++.h>
using namespace std;

vector<pair<int,int>> haha[200001];
vector<int> dp(200001,-1);
vector<int> troll(0);
int bruhseq[6] = {0,1,0,0,1,1};

void dfs(int a, int t, int d, pair<int,int> usl) {
    int br = 0,x = -1;
    for(pair<int,int> v: haha[a]) {
        if(v.first != t) {
            br++;
        }
    }
    if(br != 1) {
        usl = {d,d%2};   
    }
    for(pair<int,int> v: haha[a]) {
        if(v.first != t) {
            dfs(v.first,a,d+1,usl);
            x = dp[v.first];
        }
    }
    if(br == 1) {
        if(x == -1) {
            for(int i = 0; i < 6; i++) {
                if(bruhseq[i] == d%2 && (usl.first == -1 || bruhseq[(i+(usl.first-d))%6]%2 == usl.second)) {
                    x = i-1;
                    break;
                }
            }
        }
        dp[a] = x+1;
        for(auto v: haha[a]) {
            if(v.first != t) {
                troll[v.second] = bruhseq[x%6];
            }
        }
    }
    else {
        for(pair<int,int> v: haha[a]) {
            if(v.first != t) {
                troll[v.second] = d%2;
            }
        }
    }
}

std::vector<int> Mark(int n, int m, int a, int b, std::vector<int> u, std::vector<int> v) {
    for(int i = 0; i < m; i++) {
        haha[u[i]].push_back({v[i],i});
        haha[v[i]].push_back({u[i],i});
    }
    if(a > 2) {
        vector<int> br(n,INT_MAX);
        br[0] = 0;
        queue<int> idk;
        idk.push(0);
        vector<int> ans(m,-1);
        while(!idk.empty()) {
            int u = idk.front();
            idk.pop();
            for(pair<int,int> v: haha[u]) {
                if(br[v.first] == INT_MAX) {
                    br[v.first] = br[u]+1;
                    idk.push(v.first);
                }
            }
        }
        for(int i = 0; i < m; i++) {
            if(ans[i] == -1) {
                int c = min(br[u[i]],br[v[i]])%3;
                ans[i] = c;
            }
        }
        return ans;
    }
    else {
        troll.resize(n-1);
        dfs(0,-1,1,{-1,-1});
        return troll;
    }
}
#include "Catherine.h"
#include<bits/stdc++.h>
using namespace std;

int A;
int seq[6] = {0,1,0,0,1,1};
vector<int> wow(0);
bool first = true;
bool yeah = true;

void Init(int a, int b) {
    A = a;
}

int Move(vector<int> haha) {
    if(A > 2) {
        vector<int> wow(0);
        for(int i = 0; i < haha.size(); i++) {
            if(haha[i] >= 1) {
                wow.push_back(i);
            }
        }
        if(wow.size() == 1) {
            return wow[0];
        }
        else if(wow.size() == 2) {
            if(wow[0] == 0 && wow[1] == 1) {
                return 0;
            }
            else if(wow[0] == 1 && wow[1] == 2) {
                return 1;
            }
            else {
                return 2;
            }
        }
    }
    else {
        if(first) {
            first = false;
            if(haha[0]+haha[1] == 2) {
                if(haha[0] > 0) {
                    wow.push_back(0);
                    return 0;
                }
                else {
                    wow.push_back(1);
                    return 1;
                }
            }
            else {
                yeah = false;
                if(haha[0] == 1) {
                    wow.push_back(0);
                    return 0;
                }
                else {
                    wow.push_back(1);
                    return 1;
                }
            }
        }
        else {
            if(yeah) {
                if(haha[0]+haha[1] == 0) {
                    yeah = false;
                    return -1;
                }
                else if(haha[0]+haha[1] > 1) {
                    yeah = false;
                    if(haha[0] == 0 || haha[1] == 0) {
                        return -1;
                    }
                    else {
                        if(wow[wow.size()-1] == 1) {
                            wow.push_back(0);
                            return 0;
                        }
                        else {
                            wow.push_back(1);
                            return 1;
                        }
                    }
                }
                else if(wow.size() == 6) {
                    for(int i = 0; i < 6; i++) {
                        bool bubu = true;
                        for(int j = i; j < i+6; j++) {
                            if(seq[j-i] != wow[j%6]) {
                                bubu = false;
                            }
                        }
                        if(bubu) {
                            yeah = false;
                            break;
                        }
                    }
                    if(yeah) {
                        yeah = false;
                        return -1;
                    }
                    else {
                        if(haha[0] > 0) {
                            wow.push_back(0);
                            return 0;
                        }
                        else {
                            wow.push_back(1);
                            return 1;
                        }
                    }
                }
                else {
                    if(haha[0] > 0) {
                        wow.push_back(0);
                        return 0;
                    }
                    else {
                        wow.push_back(1);
                        return 1;
                    }
                }
            }
            else {
                if(haha[0]+haha[1] == 0) {
                    return 1/0;
                }
                if(haha[1] > 0 && (haha[0] == 0 || wow[wow.size()-1] == 0)) {
                    wow.push_back(1);
                    return 1;
                }
                else {
                    wow.push_back(0);
                    return 0;
                }
            }
        }
    }
}

Compilation message

Catherine.cpp: In function 'int Move(std::vector<int>)':
Catherine.cpp:18:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |         for(int i = 0; i < haha.size(); i++) {
      |                        ~~^~~~~~~~~~~~~
Catherine.cpp:126:29: warning: division by zero [-Wdiv-by-zero]
  126 |                     return 1/0;
      |                            ~^~
Catherine.cpp:139:1: warning: control reaches end of non-void function [-Wreturn-type]
  139 | }
      | ^
# Verdict Execution time Memory Grader output
1 Correct 27 ms 21100 KB Output is correct
2 Correct 2 ms 6196 KB Output is correct
3 Correct 27 ms 20564 KB Output is correct
4 Correct 33 ms 22228 KB Output is correct
5 Correct 35 ms 22056 KB Output is correct
6 Correct 27 ms 20828 KB Output is correct
7 Correct 27 ms 20840 KB Output is correct
8 Correct 31 ms 21564 KB Output is correct
9 Correct 35 ms 21552 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 27 ms 21100 KB Output is correct
2 Correct 2 ms 6196 KB Output is correct
3 Correct 27 ms 20564 KB Output is correct
4 Correct 33 ms 22228 KB Output is correct
5 Correct 35 ms 22056 KB Output is correct
6 Correct 27 ms 20828 KB Output is correct
7 Correct 27 ms 20840 KB Output is correct
8 Correct 31 ms 21564 KB Output is correct
9 Correct 35 ms 21552 KB Output is correct
10 Correct 28 ms 19036 KB Output is correct
11 Correct 24 ms 19032 KB Output is correct
12 Correct 26 ms 19040 KB Output is correct
13 Correct 27 ms 18868 KB Output is correct
14 Correct 25 ms 19304 KB Output is correct
15 Correct 27 ms 19452 KB Output is correct
16 Correct 30 ms 21608 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 26 ms 18516 KB Output is correct
2 Correct 3 ms 6440 KB Output is correct
3 Correct 20 ms 18152 KB Output is correct
4 Correct 32 ms 20036 KB Output is correct
5 Correct 37 ms 20064 KB Output is correct
6 Correct 27 ms 18732 KB Output is correct
7 Correct 31 ms 18556 KB Output is correct
8 Correct 31 ms 19308 KB Output is correct
9 Correct 31 ms 19396 KB Output is correct
10 Correct 35 ms 19040 KB Output is correct
11 Correct 31 ms 19040 KB Output is correct
12 Correct 30 ms 19044 KB Output is correct
13 Correct 28 ms 19040 KB Output is correct
14 Correct 28 ms 19312 KB Output is correct
15 Correct 32 ms 19312 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 26 ms 18516 KB Output is correct
2 Correct 3 ms 6440 KB Output is correct
3 Correct 20 ms 18152 KB Output is correct
4 Correct 32 ms 20036 KB Output is correct
5 Correct 37 ms 20064 KB Output is correct
6 Correct 27 ms 18732 KB Output is correct
7 Correct 31 ms 18556 KB Output is correct
8 Correct 31 ms 19308 KB Output is correct
9 Correct 31 ms 19396 KB Output is correct
10 Correct 35 ms 19040 KB Output is correct
11 Correct 31 ms 19040 KB Output is correct
12 Correct 30 ms 19044 KB Output is correct
13 Correct 28 ms 19040 KB Output is correct
14 Correct 28 ms 19312 KB Output is correct
15 Correct 32 ms 19312 KB Output is correct
16 Correct 27 ms 16960 KB Output is correct
17 Correct 22 ms 16988 KB Output is correct
18 Correct 26 ms 16976 KB Output is correct
19 Correct 24 ms 16988 KB Output is correct
20 Correct 30 ms 17724 KB Output is correct
21 Correct 28 ms 17500 KB Output is correct
22 Correct 38 ms 19596 KB Output is correct
23 Correct 26 ms 17252 KB Output is correct
24 Correct 27 ms 17152 KB Output is correct
# Verdict Execution time Memory Grader output
1 Runtime error 4 ms 6712 KB Execution killed with signal 4
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 28 ms 24936 KB Execution killed with signal 4
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 28 ms 24808 KB Execution killed with signal 4
2 Halted 0 ms 0 KB -