QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#833947#9237. Messagehansiyuan10 198ms4016kbC++172.0kb2024-12-27 08:55:462024-12-27 08:55:58

Judging History

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

  • [2024-12-27 08:55:58]
  • 评测
  • 测评结果:10
  • 用时:198ms
  • 内存:4016kb
  • [2024-12-27 08:55:46]
  • 提交

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=top=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;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 10
Accepted

Test #1:

score: 10
Accepted
time: 132ms
memory: 3784kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #2:

score: 10
Accepted
time: 140ms
memory: 4008kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #3:

score: 10
Accepted
time: 198ms
memory: 3808kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #4:

score: 10
Accepted
time: 171ms
memory: 4016kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #5:

score: 10
Accepted
time: 113ms
memory: 3956kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #6:

score: 10
Accepted
time: 79ms
memory: 4004kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

Test #7:

score: 10
Accepted
time: 134ms
memory: 4004kb

Manager to Aisha


Aisha to Manager


Manager to Basma


Basma to Manager


Manager to Checker

1

result:

points 1.0

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: