Submission #565997

#TimeUsernameProblemLanguageResultExecution timeMemory
565997errorgornStray Cat (JOI20_stray)C++17
100 / 100
58 ms16732 KiB
#include "Anthony.h" #include <bits/stdc++.h> using namespace std; #define int long long #define ii pair<int,int> #define fi first #define se second #define puf push_front #define pof pop_front #define pub push_back #define pob pop_back #define lb lower_bound #define ub upper_bound #define rep(x,s,e) for (int x=(s)-((s)>(e));x!=(e)-((s)>(e));((s)<(e))?x++:x--) #define all(x) (x).begin(),(x).end() #define sz(x) (int) (x).size() namespace { bool st; int n,m; vector<int> al[20005]; int w[20005]; queue<int> q; int d[20005]; int pat[20005]; int col[20005]; void dfs(int i,int p){ int child=0; for (auto it:al[i]){ if (it==p) continue; child++; } for (auto it:al[i]){ if (it==p) continue; if (child>1){ pat[it]=col[it]=col[i]^1; } else{ pat[it]=(pat[i]+1)%7; vector<int> C={0,1,0,0,1,1,1}; col[it]=C[pat[it]]; } d[it]=d[i]+1; dfs(it,i); } } } vector<signed> Mark(signed N, signed M, signed A, signed B, vector<signed> U, vector<signed> V) { st=(A>=3); n=N,m=M; rep(x,0,m){ al[U[x]].pub(V[x]); al[V[x]].pub(U[x]); } if (st){ memset(w,-1,sizeof(w)); q.push(0); w[0]=0; while (!q.empty()){ int u=q.front(); q.pop(); for (auto it:al[u]) if (w[it]==-1){ w[it]=w[u]+1; q.push(it); } } vector<signed> res; rep(x,0,m){ res.pub(min(w[U[x]],w[V[x]])%3); //cout<<res.back()<<" "<<U[x]<<" "<<V[x]<<endl; } return res; } else{ dfs(0,-1); vector<signed> res; rep(x,0,m){ if (d[U[x]]>d[V[x]]) swap(U[x],V[x]); res.pub(col[V[x]]); } //for (auto it:res) cout<<it<<" "; cout<<endl; return res; } }
#include "Catherine.h" #include <bits/stdc++.h> using namespace std; #define int long long #define ii pair<int,int> #define fi first #define se second #define puf push_front #define pof pop_front #define pub push_back #define pob pop_back #define lb lower_bound #define ub upper_bound #define rep(x,s,e) for (int x=(s)-((s)>(e));x!=(e)-((s)>(e));((s)<(e))?x++:x--) #define all(x) (x).begin(),(x).end() #define sz(x) (int) (x).size() namespace { bool st; int PREV=-1; set<string> good={ "01001", "10011", "00111", "01110", "11101", "11010", "10100" }; bool dir=false; string s=""; } void Init(signed A, signed B) { st=(A>=3); } signed Move(vector<signed> y) { if (st){ vector<int> v; rep(x,0,3) if (y[x] || PREV==x) v.pub(x); sort(all(v)); if (sz(v)==1){ return PREV=v[0]; } else if (v[1]==1){ return PREV=0; } else if (v[0]==1){ return PREV=1; } else{ return PREV=2; } } else{ int tot=(PREV!=-1); rep(x,0,2) tot+=y[x]; if (tot>=3){ dir=true; if (PREV!=-1) y[PREV]++; rep(x,0,2) if (y[x]==1){ if (PREV!=x) return PREV=x; else return -1; } } else if (tot==1){ dir=true; if (PREV!=-1) y[PREV]++; rep(x,0,2) if (y[x]==1){ if (PREV!=x) return PREV=x; else return -1; } } else if (dir){ rep(x,0,2) if (y[x]==1) return PREV=x; } else{ if (s==""){ rep(x,2,0) rep(z,0,y[x]) s+='0'+x; //cout<<s<<endl; rep(x,0,2) if (y[x]) return PREV=x; } else{ rep(x,0,2) rep(z,0,y[x]) s+='0'+x; //cout<<s<<endl; if (sz(s)==5){ dir=true; if (!good.count(s)){ rep(x,0,2) if (y[x]==1) return PREV=x; } else{ return -1; //PREV is same } } else{ rep(x,0,2) if (y[x]) return PREV=x; } } } } }

Compilation message (stderr)

Catherine.cpp: In function 'int Move(std::vector<int>)':
Catherine.cpp:111:1: warning: control reaches end of non-void function [-Wreturn-type]
  111 | }
      | ^
#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...