Submission #1012933

#TimeUsernameProblemLanguageResultExecution timeMemory
1012933Ivo_12Stray Cat (JOI20_stray)C++17
20 / 100
37 ms17504 KiB
#include "Anthony.h" #include <bits/stdc++.h> #define ll long long #define mp make_pair #define pb push_back #define F first #define S second #define pii pair < int, int > #define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); using namespace std; namespace { const int N = 2e4+10, M = 2e4+10, A = 4; vector < pii > edges[N]; vector < int > oznake; int dis[N]; int zap[N]; queue < int > q; int pat[6] = {0, 1, 0, 0, 1, 1}; vector < int > mark( int n, int m, int a, int b, vector < int > t1, vector < int > t2 ) { for(int i = 0; i < m; i++) { edges[t1[i]].pb(mp(t2[i], i)); edges[t2[i]].pb(mp(t1[i], i)); oznake.pb(-1); } dis[0] = 1; q.push(0); int cur; int sus; while(!q.empty()) { cur = q.front(); q.pop(); for(int i = 0; i < (int) edges[cur].size(); i++) { sus = edges[cur][i].F; if(dis[sus] == 0) { q.push(sus); dis[sus] = dis[cur]+1; } } } if(a>=3) { q.push(0); while(!q.empty()) { cur = q.front(); q.pop(); for(int i = 0; i < (int) edges[cur].size(); i++) { sus = edges[cur][i].F; if(oznake[edges[cur][i].S] == -1) { if(dis[sus] > dis[cur]) q.push(sus); oznake[edges[cur][i].S] = (dis[cur] - 1) % 3; } } } } else { q.push(0); while(!q.empty()) { cur = q.front(); q.pop(); for(int i = 0; i < (int) edges[cur].size(); i++) { sus = edges[cur][i].F; if(oznake[edges[cur][i].S] == -1 && (int) edges[cur].size() > 2) { if(dis[sus] > dis[cur]) q.push(sus); oznake[edges[cur][i].S] = (pat[zap[cur]%6] + 1) % 2; zap[sus] = (pat[zap[cur]] + 1) % 2; } if(oznake[edges[cur][i].S] == -1 && ((int) ((int) edges[cur].size() == 2 && cur != 0) || ((int) edges[cur].size() == 1 && cur == 0))) { if(dis[sus] > dis[cur]) q.push(sus); oznake[edges[cur][i].S] = pat[(zap[cur] + 1)%6]; zap[sus] = zap[cur] + 1; } } } } return oznake; } } // namespace std::vector<int> Mark(int N, int M, int A, int B, std::vector<int> U, std::vector<int> V) { std::vector<int> X(M); return ::mark(N, M, A, B, U, V); }
#include "Catherine.h" #include <bits/stdc++.h> #define ll long long #define mp make_pair #define pb push_back #define F first #define S second #define pii pair < int, int > #define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); using namespace std; namespace { int ga, gb; int l[2]; int revpatt[6] = {1, 1, 0, 0, 1, 0}; vector < int > patt[6]; vector < int > ori; int pokusaj; void init( int a, int b ) { ga = a; gb = b; l[0] = 0; l[1] = 0; for(int i = 0; i < 6; i++) { for(int j = 0; j < 5; j++) { patt[i].pb(revpatt[(j+i)%6]); } } pokusaj = 0; } int move( vector < int > v ) { if(::ga>=3) { if(v[0] && v[1]) return 0; if(v[2] && v[0]) return 2; if(v[1] && v[2]) return 1; if(!(v[0] || v[1])) return 2; if(!(v[2] || v[0])) return 1; if(!(v[1] || v[2])) return 0; } pokusaj++; if(pokusaj == 1 && v[0] + v[1] == 2) { if(v[0] == 1 && v[1] == 1) { ori.pb(0); ori.pb(1); l[0] = 0; l[1] = 1; return 1; } if(v[0] == 2 && v[1] == 0) { ori.pb(0); ori.pb(0); l[0] = 1; l[1] = 0; return 0; } if(v[0] == 0 && v[1] == 2) { ori.pb(1); ori.pb(1); l[0] = 0; l[1] = 1; return 1; } } else { if((pokusaj == 2 || pokusaj == 3) && v[0] + v[1] == 1) { ori.pb((int) (v[0] == 0)); l[0] = v[0] == 1; l[1] = v[1] == 1; return ((int) (v[0] == 0)); } else { if((pokusaj == 4) && v[0] + v[1] == 1) { ori.pb((int) (v[0] == 0)); for(int i = 0; i < 6; i++) if(ori==patt[i]) return -1; l[0] = v[0] == 1; l[1] = v[1] == 1; return (int) (v[0] == 0); } else pokusaj = 10; } } pokusaj = 10; if(v[0] == 0 && v[1] == 0) return -1; if(v[0] == 0 && v[1] > 1 && pokusaj != 1) { return -1; } if(v[0] > 1 && v[1] == 0 && pokusaj != 1) { return -1; } if(v[0] == 0 && v[1] == 1) { l[1] = 1; l[0] = 0; return 1; } if(v[0] == 1 && v[1] == 0) { l[1] = 0; l[0] = 1; return 0; } if(v[0] == 1 && v[1] > 1) { l[1] = 0; l[0] = 1; return 0; } if(v[0] > 1 && v[1] == 1) { l[1] = 1; l[0] = 0; return 1; } if(l[0]) { l[1] = 1; l[0] = 0; return 1; } if(l[1]) { l[1] = 0; l[0] = 1; return 0; } if(v[0] > v[1]) { l[1] = 0; l[0] = 1; return 0; } l[1] = 1; l[0] = 0; return 1; } } // namespace void Init(int A, int B) { ::init(A, B); } int Move(std::vector<int> y) { return ::move(y); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...