Submission #1137593

#TimeUsernameProblemLanguageResultExecution timeMemory
1137593KhoaDuyAncient Machine (JOI21_ancient_machine)C++20
Compilation error
0 ms0 KiB
#include "Anna.h"
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int blsz=63,blcomsz=44,lim=17;
long long DP[blsz+1];
void setup(){
    DP[0]=1,DP[1]=2;
    for(int i=2;i<=blsz;i++){
        DP[i]=DP[i-1]+DP[i-2];
    }
}
string toBin(long long x,int limit){
    string s="";
    while(x>0){
        s+=((x&1)+'0');
        x>>=1;
    }
    while(s.length()<limit){
        s+='0';
    }
    reverse(s.begin(),s.end());
    return s;
}
long long toInt(string &s,int l,int r){
    long long x=0;
    for(int i=l;i<=r;i++){
        x<<=1;
        x+=(s[i]-'0');
    }
    return x;
}
void Anna(int n,vector<char> s){
    setup();
    int posX=-1,posY=-1,posZ=-1;
    for(int i=0;i<n;i++){
        if(s[i]=='X'){
            posX=i;
            break;
        }
    }
    for(int i=n-1;i>=0;i--){
        if(s[i]=='Z'){
            posZ=i;
            break;
        }
    }
    for(int i=posZ;i>=max(posX,0);i--){
        if(s[i]=='Y'){
            posY=i;
            break;
        }
    }
    if(posX==-1||posY==-1||posZ==-1){
        posX=0,posY=1,posZ=2;
    }
    string send="";
    send+=toBin(posX,lim);
    send+=toBin(posY,lim);
    send+=toBin(posZ,lim);
    int mark[n+1000]={0};
    for(int i=posX;i<posY;i++){
        if(s[i]=='Y'&&s[i+1]=='X'){
            mark[i]=1;
        }
    }
    for(int k=0;k<n;k+=blsz){
        long long pos=0;
        for(int i=k;i<k+blsz;i++){
            if(mark[i]==1){
                pos+=DP[k+blsz-1-i];
            }
        }
        send+=toBin(pos,blcomsz);
    }
    for(int i=0;i<send.size();i++){
        Send(send[i]-'0');
    }
}
#include "Bruno.h"
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int blsz=63,blcomsz=44,lim=17;
long long DP[blsz+1];
void setup(){
    DP[0]=1,DP[1]=2;
    for(int i=2;i<=blsz;i++){
        DP[i]=DP[i-1]+DP[i-2];
    }
}
string toBin(long long x,int limit){
    string s="";
    while(x>0){
        s+=((x&1)+'0');
        x>>=1;
    }
    while(s.length()<limit){
        s+='0';
    }
    reverse(s.begin(),s.end());
    return s;
}
long long toInt(string &s,int l,int r){
    long long x=0;
    for(int i=l;i<=r;i++){
        x<<=1;
        x+=(s[i]-'0');
    }
    return x;
}
void Bruno(int n,int l,vector<int> a){
    setup();
    string trans="";
    for(int i=0;i<l;i++){
        trans+=(a[i]+'0');
    }
    bool spe[n]={false};
    spe[toInt(trans,0,lim-1)]=true;
    spe[toInt(trans,lim,2*lim-1)]=true;
    spe[toInt(trans,2*lim,3*lim-1)]=true;
    string state="";
    for(int k=3*lim;k<trans.length();k+=blcomsz){
        long long pos=toInt(trans,k,k+blcomsz-1);
        for(int len=blsz;len>0;len--){
            if(pos>DP[len-1]){
                pos-=DP[len-1];
                state+='1';
                state+='0';
                len--;
            }
            else{
                state+='0';
            }
        }
    }
    for(int i=0;i<state.length();i++){
        if(state[i]=='1'){
            spe[i]=true;
        }
    }
    for(int i=0;i<n;i++){
        if(!spe[i]){
            Remove(i);
        }
    }
    bool skip=false;
    for(int i=n-1;i>=0;i--){
        if(spe[i]){
            if(!skip){
                skip=true;
                continue;
            }
            Remove(i);
        }
    }
    for(int i=n-1;i>=0;i--){
        if(spe[i]){
            Remove(i);
            break;
        }
    }
}

Compilation message (stderr)

# 1번째 컴파일 단계

Anna.cpp: In function 'void Anna(long long int, std::vector<char>)':
Anna.cpp:48:26: error: no matching function for call to 'max(long long int&, int)'
   48 |     for(int i=posZ;i>=max(posX,0);i--){
      |                       ~~~^~~~~~~~
In file included from /usr/include/c++/11/vector:60,
                 from Anna.h:1,
                 from Anna.cpp:1:
/usr/include/c++/11/bits/stl_algobase.h:254:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  254 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/11/bits/stl_algobase.h:254:5: note:   template argument deduction/substitution failed:
Anna.cpp:48:26: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   48 |     for(int i=posZ;i>=max(posX,0);i--){
      |                       ~~~^~~~~~~~
In file included from /usr/include/c++/11/vector:60,
                 from Anna.h:1,
                 from Anna.cpp:1:
/usr/include/c++/11/bits/stl_algobase.h:300:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  300 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/11/bits/stl_algobase.h:300:5: note:   template argument deduction/substitution failed:
Anna.cpp:48:26: note:   deduced conflicting types for parameter 'const _Tp' ('long long int' and 'int')
   48 |     for(int i=posZ;i>=max(posX,0);i--){
      |                       ~~~^~~~~~~~
In file included from /usr/include/c++/11/vector:62,
                 from Anna.h:1,
                 from Anna.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3461:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(std::initializer_list<_Tp>)'
 3461 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/11/bits/stl_algo.h:3461:5: note:   template argument deduction/substitution failed:
Anna.cpp:48:26: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   48 |     for(int i=posZ;i>=max(posX,0);i--){
      |                       ~~~^~~~~~~~
In file included from /usr/include/c++/11/vector:62,
                 from Anna.h:1,
                 from Anna.cpp:1:
/usr/include/c++/11/bits/stl_algo.h:3467:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(std::initializer_list<_Tp>, _Compare)'
 3467 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/11/bits/stl_algo.h:3467:5: note:   template argument deduction/substitution failed:
Anna.cpp:48:26: note:   mismatched types 'std::initializer_list<_Tp>' and 'long long int'
   48 |     for(int i=posZ;i>=max(posX,0);i--){
      |                       ~~~^~~~~~~~