QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#116222 | #6661. 야유회 | xtqqwq# | 0 | 1956ms | 3864kb | C++14 | 3.9kb | 2023-06-28 12:23:13 | 2024-05-31 18:21:31 |
Judging History
answer
#include<bits/stdc++.h>
#include "workshop.h"
#define pb push_back
#define fi first
#define se second
#define mp make_pair
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef long double ld;
template <typename T> bool chkmin(T &x,T y){return x>y?x=y,1:0;}
template <typename T> bool chkmax(T &x,T y){return x<y?x=y,1:0;}
const int B=36,M=100000;
int cnt;
int per[100005];
mt19937 mrand(1);
namespace sub1{
const int C=5,N=7;
int pw[10];
int p[1000005],col[1000005];
vector<int> adj[1000005];
bool vis[1000005];
int id(int x,int y,int z){return (x-1)*N*N+(y-1)*N+z;}
void change(int x){
int num[C]={0};
for(auto v:adj[x]) num[col[v]]++;
vector<int> co(0);
int mina=1<<30;
for(int k=0;k<C;k++){
if(chkmin(mina,num[k])) co.clear(),co.pb(k);
else if(mina==num[k]) co.pb(k);
}
int pl=mrand()%co.size();
cnt-=num[col[x]];
cnt+=mina;
col[x]=co[pl];
}
void work(){
pw[0]=1;
for(int i=1;i<=6;i++) pw[i]=pw[i-1]*N;
for(int i=0;i<N;i++){
int mask=0;
for(int j=0;j<6;j++) mask+=pw[j]*i;
vis[mask]=1;
}
for(int i=0;i<pw[6];i++){
if(vis[i]) continue;
int t=i/pw[5];
for(int j=0;j<N;j++){
int to=i%pw[5]*N+j;
if(vis[to]) continue;
adj[i].pb(to);
adj[to].pb(i);
}
}
for(int i=1;i<=pw[6];i++) p[i]=i;
while(1){
cnt=0;
for(int i=1;i<=pw[6];i++) col[i]=mrand()%C;
for(int i=1;i<=pw[6];i++) for(auto v:adj[i]) if(col[i]==col[v]) cnt++;
cnt>>=1;
for(int i=1;i<=1000;i++){
cout<<"cnt "<<cnt<<endl;
shuffle(p+1,p+pw[6]+1,mrand);
for(int i=1;i<=pw[6];i++) change(p[i]);
if(!cnt) break;
}
if(!cnt) break;
}
}
}
namespace sub2{
const int C=4,N=4;
int pw[10];
int p[1000005],col[1000005];
vector<int> adj[1000005];
bool vis[1000005];
int id(int x,int y,int z){return (x-1)*N*N+(y-1)*N+z;}
void change(int x){
int num[C]={0};
for(auto v:adj[x]) num[col[v]]++;
vector<int> co(0);
int mina=1<<30;
for(int k=0;k<C;k++){
if(chkmin(mina,num[k])) co.clear(),co.pb(k);
else if(mina==num[k]) co.pb(k);
}
int pl=mrand()%co.size();
cnt-=num[col[x]];
cnt+=mina;
col[x]=co[pl];
}
void work(){
pw[0]=1;
for(int i=1;i<=6;i++) pw[i]=pw[i-1]*N;
for(int i=0;i<N;i++){
int mask=0;
for(int j=0;j<6;j++) mask+=pw[j]*i;
vis[mask]=1;
}
for(int i=0;i<pw[6];i++){
if(vis[i]) continue;
int t=i/pw[5];
for(int j=0;j<N;j++){
int to=i%pw[5]*N+j;
if(vis[to]) continue;
adj[i].pb(to);
adj[to].pb(i);
}
}
for(int i=1;i<=pw[6];i++) p[i]=i;
while(1){
cnt=0;
for(int i=1;i<=pw[6];i++) col[i]=mrand()%C;
for(int i=1;i<=pw[6];i++) for(auto v:adj[i]) if(col[i]==col[v]) cnt++;
cnt>>=1;
for(int i=1;i<=1000;i++){
// cout<<"cnt "<<cnt<<endl;
shuffle(p+1,p+pw[6]+1,mrand);
for(int i=1;i<=pw[6];i++) change(p[i]);
if(!cnt) break;
}
if(!cnt) break;
}
}
}
void init(){
for(int i=0;i<M;i++) per[i]=i;
shuffle(per,per+M,mrand);
sub1::work();
sub2::work();
}
int morning(int my_num,int right_num){
return per[my_num]%B*B+per[right_num]%B;
}
int afternoon(int left_num, int my_num, int right_num){
int t1=left_num/B;
int t2=my_num/B;
int t3=right_num/B;
int t4=right_num%B;
return t1*B*B*B+t2*B*B+t3*B+t4;
}
int evening(int left_num, int my_num, int right_num){
int b=sub1::N;
int t1=left_num/B/B/B;
int t2=my_num/B/B/B;
int t3=right_num/B/B/B;
int t4=right_num%(B*B*B)/B/B;
int t5=right_num%(B*B)/B;
int t6=right_num%B;
int a1=t1%b;
int a2=t2%b;
int a3=t3%b;
int a4=t4%b;
int a5=t5%b;
int a6=t6%b;
int b1=t1/b;
int b2=t2/b;
int b3=t3/b;
int b4=t4/b;
int b5=t5/b;
int b6=t6/b;
int mask1=a1*b*b*b*b*b+a2*b*b*b*b+a3*b*b*b+a4*b*b+a5*b+a6;
int mask2=b1*b*b*b*b*b+b2*b*b*b*b+b3*b*b*b+b4*b*b+b5*b+b6;
if(sub1::vis[mask1]) return sub2::col[mask2]+sub1::C;
else return sub1::col[mask1];
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 1956ms = 1955ms + 1ms
memory: 3548kb,3864kb
input:
2dc2b1d4-8de2-INPUT-bcd3-aa55b691fdb3 1 2 40 40 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 40 0 3 1 5 7 9 6 4 2 10 8 23 21 25 27 29 26 24 22 30 28 13 11 15 17 19 16 14 12 20 18 33 31 35 37 39 36 34 32 38
output:
cnt 165043 cnt 25215 cnt 5213 cnt 1845 cnt 966 cnt 611 cnt 438 cnt 328 cnt 255 cnt 199 cnt 164 cnt 142 cnt 119 cnt 96 cnt 81 cnt 73 cnt 62 cnt 52 cnt 44 cnt 37 cnt 31 cnt 28 cnt 27 cnt 24 cnt 22 cnt 20 cnt 18 cnt 17 cnt 16 cnt 16 cnt 15 cnt 14 cnt 14 cnt 12 cnt 12 cnt 10 cnt 9 cnt 8 cnt 7 cnt 6 cnt ...
input:
cnt 165043 cnt 25215 cnt 5213 cnt 1845 cnt 966 cnt 611 cnt 438 cnt 328 cnt 255 cnt 199 cnt 164 cnt 142 cnt 119 cnt 96 cnt 81 cnt 73 cnt 62 cnt 52 cnt 44 cnt 37 cnt 31 cnt 28 cnt 27 cnt 24 cnt 22 cnt 20 cnt 18 cnt 17 cnt 16 cnt 16 cnt 15 cnt 14 cnt 14 cnt 12 cnt 12 cnt 10 cnt 9 cnt 8 cnt 7 cnt 6 cnt ...
output:
64be09ab-d709-ERROR-82bc-c23f6124dd26 SV44
result:
wrong answer SV44
Subtask #2:
score: 0
Wrong Answer
Test #8:
score: 0
Wrong Answer
time: 1823ms = 1822ms + 1ms
memory: 3484kb,3852kb
input:
2dc2b1d4-8de2-INPUT-bcd3-aa55b691fdb3 2 2 40 40 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 40 0 3 1 5 7 9 6 4 2 10 8 23 21 25 27 29 26 24 22 30 28 13 11 15 17 19 16 14 12 20 18 33 31 35 37 39 36 34 32 38
output:
cnt 165043 cnt 25215 cnt 5213 cnt 1845 cnt 966 cnt 611 cnt 438 cnt 328 cnt 255 cnt 199 cnt 164 cnt 142 cnt 119 cnt 96 cnt 81 cnt 73 cnt 62 cnt 52 cnt 44 cnt 37 cnt 31 cnt 28 cnt 27 cnt 24 cnt 22 cnt 20 cnt 18 cnt 17 cnt 16 cnt 16 cnt 15 cnt 14 cnt 14 cnt 12 cnt 12 cnt 10 cnt 9 cnt 8 cnt 7 cnt 6 cnt ...
input:
cnt 165043 cnt 25215 cnt 5213 cnt 1845 cnt 966 cnt 611 cnt 438 cnt 328 cnt 255 cnt 199 cnt 164 cnt 142 cnt 119 cnt 96 cnt 81 cnt 73 cnt 62 cnt 52 cnt 44 cnt 37 cnt 31 cnt 28 cnt 27 cnt 24 cnt 22 cnt 20 cnt 18 cnt 17 cnt 16 cnt 16 cnt 15 cnt 14 cnt 14 cnt 12 cnt 12 cnt 10 cnt 9 cnt 8 cnt 7 cnt 6 cnt ...
output:
64be09ab-d709-ERROR-82bc-c23f6124dd26 SV44
result:
wrong answer SV44