Submission #1200578

#TimeUsernameProblemLanguageResultExecution timeMemory
1200578boclobanchatMagic Show (APIO24_show)C++20
0 / 100
2 ms364 KiB
#include<bits/stdc++.h>
#include"Alice.h"
using namespace std;
long long fr[22],per[22];
bool ck[22];
vector< pair<int,int> > Alice()
{
    long long x=setN(4830)-1;
    vector< pair<int,int> > edges;
    fr[0]=1;
    for(int i=1;i<=20;i++) fr[i]=fr[i-1]*i,ck[i]=false;
    for(int i=1;i<=20;i++) while(true)
    {
    	per[i]++;
    	if(x>=fr[20-i]) x-=fr[20-i];
    	else break;
	}
	for(int j=0;j<230;j++) for(int i=1;i<=20;i++) edges.push_back({j*21+per[i],j*21+i+1});
	for(int j=0;j<229;j++) edges.push_back({j*21+1,(j+1)*21+1});
	return edges;
}
#include<bits/stdc++.h>
#include"Bob.h"
using namespace std;
long long fr[22],per[22];
long long Bob(vector< pair<int,int> > V)
{
	for(auto v:V)
	{
		int l=(v.first-1)/21,r=(v.second-1)/21;
		if(l==r) per[(v.second-1)%21]=v.first%21;
	}
	fr[0]=1;
	for(int i=1;i<=20;i++) fr[i]=fr[i-1]*i;
	long long x=1;
	for(int i=1;i<=20;i++) if(per[i]==0) assert(false);
	for(int i=1;i<=20;i++) x+=(per[i]-1)*fr[20-i];
	return x;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...