QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#833941#9237. Messagehansiyuan0 0ms0kbC++172.0kb2024-12-27 08:46:122024-12-27 08:46:12

Judging History

你现在查看的是最新测评结果

  • [2024-12-27 08:46:12]
  • 评测
  • 测评结果:0
  • 用时:0ms
  • 内存:0kb
  • [2024-12-27 08:46:12]
  • 提交

answer

#include "message.h"
#include<bits/stdc++.h>
using namespace std;

int n;
bool B[100][31];
int pos[31];
void get_nxt(int &k,vector<bool> C){
    if(pos[k]+1>=66){
        k++;
        while(C[k]) k++;
    }
    else pos[k]++;
}
void send_message(vector<bool> A,vector<bool> C){
    memset(pos,0,sizeof(pos));
    memset(B,0,sizeof(B));
    n = A.size();
    for(int i=0;i<31;i++){
        if(C[i]) continue;
        int j = (i+1)%31;
        while(C[j]) j=(j+1)%31;
        pos[i] = (j-i+31)%31-1;
        B[pos[i]++][i] = 1;
    }
    int k=0;
    while(C[k]) k++;
    for(int i=15;i>=0;i--){
        B[pos[k]][k] = n>>i&1;
        get_nxt(k,C);
    }
    for(int i=0;i<n;i++){
        B[pos[k]][k] = A[i];
        if(i<n-1) get_nxt(k,C);
    }
    vector<bool> p(31,0);
    for(int i=0;i<66;i++){
        for(int j=0;j<31;j++)
            p[j] = B[i][j];//,printf("%d ",B[i][j]);
        // puts("");
        send_packet(p);
    }
}
bool flg;
int fa[31];
int stk[35],top;
vector<bool> C(31,0);
void dfs(int u){
    if(pos[u]){
        if(top-pos[u]+1==16){
            flg=1;
            for(int i=pos[u];i<=top;i++)
                C[stk[i]]=0;
        }
        return;
    }
    stk[++top] = u;
    pos[u] = top;
    dfs(fa[u]);
}
vector<bool> res;
vector<bool> receive_message(vector<vector<bool>> A){
    for(int i=0;i<31;i++){
        fa[i]=0;
        while(fa[i]<31 && A[fa[i]][i]==0) fa[i]++;
        fa[i] += i+1;
        fa[i] %= 31;
    }
    for(int i=0;i<31;i++) C[i]=1,pos[i]=0;
    flg=0;
    for(int i=0;i<31;i++)
        if(!pos[i] && !flg) dfs(i);
    for(int i=0;i<31;i++){
        if(C[i]) continue;
        int j = i+1;
        while(C[j]) j=(j+1)%31;
        pos[i] = (j-i+31)%31;
    }
    int k = 0;
    while(C[k]) k++;
    int n = 0;
    for(int i=15;i>=0;i--){
        if(A[pos[k]][k]) n|=(1<<i);
        get_nxt(k,C);
    }
    res.resize(n);
    for(int i=0;i<n;i++){
        res[i] = A[pos[k]][k];
        if(i<n-1) get_nxt(k,C);
    }
    return res;
}

详细

Subtask #1:

score: 0
Instance #1 Runtime Error

Test #1:

score: 0
Instance #1 Runtime Error

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0
ing with message 'manual RTE, cant read int from grader'
Quitting with result code 1

result:


Subtask #2:

score: 0
Instance #0 Runtime Error

Test #8:

score: 0
Instance #0 Runtime Error

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

0
ing with message 'manual RTE, cant read int from grader'
Sending secret with code DIE to mgr2sol[1]
Quitting with result code 1

result: