답안 #1012502

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1012502 2024-07-02T08:57:06 Z Unforgettablepl Ancient Machine (JOI21_ancient_machine) C++17
0 / 100
7 ms 1940 KB
#include "Anna.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;

namespace {

vector<int> fib(65);
void genFib(){
    fib[1] = 1;
    for(int i=2;i<65;i++)fib[i]=fib[i-1]+fib[i-2];
}
void blockp(vector<int> block){
    int ans = 0;
    for(int i=0;i<block.size();i++){
        if(block[i])ans+=fib[block.size()-i+1];
    }
    for(int bit=0;bit<44;bit++)Send(min(1,ans&(1<<bit)));
}
void process(vector<int> arr){
    genFib();
    for(int blocks=0;blocks<1588;blocks++){
        vector<int> curr;
        for(int i=0;i<63;i++)curr.emplace_back(arr[blocks*40+i]);
        blockp(curr);
    }
}
}

void Anna(int N, std::vector<char> S) {
    bool foundX = false;
    S.emplace_back('$');
    vector<int> bits;
    int founder = -2;
    bool edge = false;
    for(int i=0;i<N;i++){
        if(S[i]=='X'){
            if(foundX)bits.emplace_back(0);
            else {
                foundX = true;
                founder = i;
                bits.emplace_back(1);
            }
        } else if(S[i]=='Y'){
            bits.emplace_back(0);
        } else if(S[i]=='Z'){
            if(!foundX or S[i+1]=='Z' or i-1==founder){
                bits.emplace_back(0);
                if(i-1==founder and S[i+1]!='Z')edge = true;
            } else bits.emplace_back(1);
        }
    }
    while(bits.size()<100044)bits.emplace_back(0);
    process(bits);
    if(edge)Send(0);
}
#include "Bruno.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;

namespace {
vector<int> fib(65);
void genFib(){
    fib[1] = 1;
    for(int i=2;i<65;i++)fib[i]=fib[i-1]+fib[i-2];
}
vector<int> blockp(int tar){
    vector<int> ans = {0};
    for(int i=0;i<63;i++){
        if(ans.back()==0 and fib[63-i+1]<=tar){
            ans.emplace_back(1);
            tar-=fib[63-i+1];
        } else ans.emplace_back(0);
    }
    ans.erase(ans.begin());
    return ans;
}
vector<int> process(vector<int> arr){
    genFib();
    vector<int> res;
    for(int block=0;block<1588;block++){
        int curr = 0;
        for(int i=0;i<44;i++)if(arr[block*44+i])curr|=(1<<i);
        auto ans = blockp(curr);
        for(int&i:ans)res.emplace_back(i);
    }
    return res;
}
}  // namespace

void Bruno(int N, int L, std::vector<int> A) {
    vector<int> PR;
    // Process A into PR
    PR = process(A);
    PR.erase(PR.begin()+N,PR.end());
    // Processing end
    vector<bool> vis(N);
    vector<int> po;
    for(int i=0;i<N;i++){
        if(PR[i]==1)po.emplace_back(i);
    }
    if(L==69873){
        po.insert(po.begin()+1,po[0]+1);
    }
    for(int x=1;x<po.size();x++){
        for(int i=po[x]-1;i>po[x-1];i--){
            Remove(i);
            vis[i]=true;
        }
        vis[po[x]]=true;
        Remove(po[x]);
    }
    for(int i=0;i<N;i++)if(!vis[i])Remove(i);
}

Compilation message

Anna.cpp: In function 'void {anonymous}::blockp(std::vector<int>)':
Anna.cpp:15:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |     for(int i=0;i<block.size();i++){
      |                 ~^~~~~~~~~~~~~

Bruno.cpp: In function 'void Bruno(int, int, std::vector<int>)':
Bruno.cpp:50:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |     for(int x=1;x<po.size();x++){
      |                 ~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 1688 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 1940 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -