제출 #1212238

#제출 시각아이디문제언어결과실행 시간메모리
1212238loomMagic Show (APIO24_show)C++20
0 / 100
2 ms616 KiB
#include "Alice.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 5e18
#define nl '\n'

vector<pair<int,int>> Alice(){
   int n = 5000;
	int x = setN(n);
   int a = (x+n-1)/n;
   int b = x % n == 0 ? n : x % n;
   int c = (a+b) % n;
   
   vector<pair<int,int>> g;

   int cnt = 0, p, q, r;
   for(int i=1; i<=n; i++){
      if(i == a or i == b or i == c) continue;
      cnt++;
      if(cnt <= 1666) g.push_back({a, i}), p = i;
      else if(cnt <= 3331) g.push_back({b, i}), q = i;
      else g.push_back({c, i}), r = i;
   }

   g.push_back({p, q});
   g.push_back({q, r});

   return g;
}
#include "Bob.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 5e18
#define nl '\n'

ll Bob(vector<pair<int,int>> v){
   int n = 5000;
	vector<int> g[n+1];

   for(auto [a, b] : v){
      g[a].push_back(b);
      g[b].push_back(a);
   }

   int p = -1, q;
   for(int i=1; i<=n; i++){
      if(g[i].size() <= 10) continue;
      if(p == -1) p = i;
      else{
         q = i;
         break;
      }
   }

   int x = -1, y = -1, sum = -1;

   int pc = g[p][0];
   if(pc <= 1666) x = pc;
   else if(pc <= 3331) y = pc;
   else sum = pc;

   int qc = g[q][0];
   if(qc <= 1666) x = qc;
   else if(qc <= 3331) y = qc;
   else sum = qc;

   if(x == -1) x = sum - y;
   else if(y == -1) y = sum - x;

   return (x-1) * n + y;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...