제출 #710452

#제출 시각아이디문제언어결과실행 시간메모리
710452penguin133길고양이 (JOI20_stray)C++17
15 / 100
60 ms16456 KiB
#include <bits/stdc++.h>
using namespace std;
#include "Anthony.h"
//#define int long long
#define pi pair<int, int>
#define pii pair<int, pi>
#define fi first
#define se second
#ifdef _WIN32
#define getchar_unlocked _getchar_nolock
#endif
 

namespace {
 
int FunctionExample(int i, int A) {
  return i % A;
}
 
vector <int> adj[20005];
int dist[20005], grr[200005], which[200005];

void dfs(int x, int cur){
	dist[x] = cur;
	for(auto i : adj[x]){
		if(!dist[i])dfs(i, cur + 1);
	}
}

string wtf = "0011010", wtf2 = "1101001";


}  // 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);
  for(int i=0;i<M;i++){
	  adj[U[i]].push_back(V[i]);
	  adj[V[i]].push_back(U[i]);
  }
  if(B == 0){
	  queue <int> qu;
	  for(int i=0;i<N;i++)dist[i] = 1e9;
	  dist[0] = 0;
	  qu.push(0);
	  while(!qu.empty()){
		  int x = qu.front(); qu.pop();
		  for(auto i : adj[x]){
			  if(dist[i] > dist[x] + 1)dist[i] = dist[x] + 1, qu.push(i);
		  }
	  }
	  for(int i=0;i<M;i++){
		  int x = max(dist[U[i]], dist[V[i]]);
		if(abs(dist[U[i]] - dist[V[i]]) != 1)X[i] = (x + 1) % 3;
		 else X[i] = x % min(A, 3);
	  }
	  return X;
  }
  else{
	  queue <int> qu;
	  for(int i=0;i<N;i++)dist[i] = 1e9;
	  dist[0] = 0;
	  grr[0] = -1;
	  which[0] = 0;
	  qu.push(0);
	  while(!qu.empty()){
		 int x = qu.front(); qu.pop();
		 for(auto i : adj[x]){
			if(dist[i] > dist[x] + 1){
				dist[i] = dist[x] + 1;
				qu.push(i);
				if((int)adj[x].size() <= 2){
					grr[i] = (grr[x] + 1)%7;
					which[i] = which[x];
				}
				else{
					int tmp;
					if(x == 0)tmp = 0;
					else if(!which[x])tmp = wtf[grr[x]] - '0';
					else tmp = wtf2[grr[x]] - '0';
					if(tmp)grr[i] = 0, which[i] = 0;
					else grr[i] = 0, which[i] = 1;
				}
			}
		 }
	 }
	 for(int i=0;i<M;i++){
		 int x = (dist[U[i]] > dist[V[i]] ? U[i] : V[i]);
		 int tmp;
					if(x == 0)tmp = 0;
					else if(!which[x])tmp = wtf[grr[x]] - '0';
					else tmp = wtf2[grr[x]] - '0';
		 X[i] = tmp;
		// cout << tmp << ' ';
	 }
	 return X;
  }
}

#include <bits/stdc++.h>
using namespace std;
#include "Catherine.h"
//#define int long long
#define pi pair<int, int>
#define pii pair<int, pi>
#define fi first
#define se second
#ifdef _WIN32
#define getchar_unlocked _getchar_nolock
#endif
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
 
namespace {
 
int A, B;
int variable_example = 0;
 int prv= -1;
 int cnt = 0, bruh[20005];
 int st = -1;
 vector <string> stuf[3] = {{"232"}, {"322", "221", "212", "123"}, {"222"}};
 string cur = "";
 bool ret = 0;
 int rem = 0;
}  // namespace
 
void Init(int A, int B) {
  ::A = A;
  ::B = B;
}
 
int Move(std::vector<int> y) {
	if(rem){
		rem--;
		return -1;
	}
  ++variable_example;
  if(B == 0){
	 if(prv != -1){
	  prv--;
	  if(prv < 0)prv += 3;
	  return prv;
  }
  vector <int> stuf2;
  int x = -1;
  for(int j=0;j<3;j++){
	  if(y[j] == 1)stuf2.push_back(j);
	  else x = j;
  }
  if((int)stuf2.size() == 1){prv = stuf2[0]; return stuf2[0];}
  else{
	  if(x == 0)prv = 1;
	  else if(x == 1)prv = 2;
	  else prv = 0;
	  return prv;
  }
  return -1;
	}
  int sm = 0;
  for(int j=0;j<A;j++)sm += y[j];
  if(ret || (sm == 1 && prv == -1)){
	  ret = 1;
	  for(int j=0;j<A;j++){
		  if(y[j] == 1){prv = j; return j;}
	  }
  }
 // cout << sm << ' ' << variable_example << ' ';
  if(sm + (prv != -1) == 2){
	 // cout << variable_example << '\n';
	  if(ret){
		 // cout << "bozo\n";
		  for(int j=0;j<A;j++)if(y[j] == 1){prv = j; return j;}
	  }
	  if(cnt >= 1){
		  if(y[0] == 2 && y[1] == 0)cur += "1";
		  else if(y[0] == 1 && y[1] == 1)cur += "2";
		  else cur += "3";
	  }
	  if(cnt == 3){
		  bool f = 0;
		  for(auto i : stuf[st-1])if(i == cur)f = 1;
		  ret = 1;
		  if(f){
			  rem = 2;
			return -1;  
		  }
		  else{
			  for(int j=0;j<A;j++)if(y[j] == 1){prv = j; return j;}
		  }
	  }
	  if(cnt == 0){
		  if(y[0] == 2 && y[1] == 0)st = 1;
		  else if(y[0] == 1 && y[1] == 1)st = 2;
		  else st = 3;
		  cur = "";
	  }
	  cnt++;
	  for(int j=0;j<A;j++)if(y[j]){prv = j; return j;}
  }
  else cnt = 0, cur = "";
  if(sm >= 2 && prv != -1){
	  ret = 1;
	  prv = 1 - prv;
	  return prv;
  }
  else if(sm >= 3){
	  ret = 1;
	  for(int j=0;j<A;j++)if(y[j] == 1){prv = j; return j;}
  }
  else if(ret || sm == 1){
	  ret = 1;
	  for(int j=0;j<A;j++)if(y[j]){prv = j; return j;}
  }
  if(sm == 0){ret = 1; return -1;}
  return -1;
}

컴파일 시 표준 에러 (stderr) 메시지

Anthony.cpp:16:5: warning: 'int {anonymous}::FunctionExample(int, int)' defined but not used [-Wunused-function]
   16 | int FunctionExample(int i, int A) {
      |     ^~~~~~~~~~~~~~~

Catherine.cpp:19:15: warning: '{anonymous}::bruh' defined but not used [-Wunused-variable]
   19 |  int cnt = 0, bruh[20005];
      |               ^~~~
#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...