제출 #1264739

#제출 시각아이디문제언어결과실행 시간메모리
1264739hoangmc2009Longest beautiful sequence (IZhO17_subsequence)C++17
100 / 100
4080 ms157956 KiB
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int n,a[100009],b[100009];
pair<int,int> dp[1024][1024][19],vet[100009];
vector<int> res;
int main()
{
    if(fopen("D:/CPP/THEMIS/test.inp","r"))
    {
        freopen("D:/CPP/THEMIS/test.inp","r",stdin);
        freopen("D:/CPP/THEMIS/test.out","w",stdout);
    }
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;++i) cin>>a[i];
    for(int i=1;i<=n;++i) cin>>b[i];
    for(int i=1;i<=n;++i)
    {
        pair<int,int> mx={0,0};
        for(int j=0;j<1024;++j)
        {
            int c=__builtin_popcount((a[i]%1024)&j);
            if(b[i]-c>=0 and b[i]-c<10) mx=max(mx,dp[j][a[i]/1024][b[i]-c]);
        }
        vet[i]={mx.first+1,mx.second};
        for(int j=0;j<1024;++j) dp[a[i]%1024][j][__builtin_popcount((a[i]/1024)&j)]=max(dp[a[i]%1024][j][__builtin_popcount((a[i]/1024)&j)],{vet[i].first,i});
    }
    int i=max_element(vet+1,vet+n+1)-vet;
    cout<<vet[i].first<<'\n';
    while(i>0)
    {
        res.push_back(i);
        i=vet[i].second;
    }
    for(i=res.size()-1;i>=0;--i) cout<<res[i]<<" ";
}
/*
                                                                                                   ........................
                                                                                            ..::-+**#%@@@@@@@@@@@@@@@@@@%#**+::..
                                                                                  ..:=++#%%@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@%+.
                                                                           ..:-+*#%@@@@@@@@%%%%##############################%%@@@@*:.
                                                                     ..:-+*%@@@@@@@%%%##########################################%@@@@+:.
                                                                ..:=+%@@@@@@%%#####################################################@@@@+..
                                                          ....-+%@@@@@@%#############################################################@@@@=..
                                                        ..=#@@@@@%%###################################################################%@@@%-.
                                                    .:+#%@@@@%%#########################################################################%@@@#:.
                                                .:=*%@@@%%###############################################################################%@@@@-.
                                            ..-*%@@@%%#####################################################################################%@@@=.
                                          ..+@@@@###########################################################################################%@@@*..
                                         .*@@@#*##############################################################################################@@@%.
                                       .+@@@#**################################################################################################@@@%:.
                                     .-%@@#**####%##############################################################################################%@@%:.
                                    .+@@#***###%%################################################################################################%@@@-.
                                   :#@%****###%%*#################################################################################################%@@@-.
                                  -@@%****###@%*###################################################################################################%@@@-.
                                 -@@#***###%@#*#####################################################################################################%@@@=.
                                -@@#***###@@#*#######################################################################################################@@@%-.
                               :@@#***###@%**#########################################################################################################@@@+.
                              :%@#***##%@%**##########################################################################################################%@@@.
                             .#@%***##%@%**############################################################################################################%@@*.
                            .+@%***##@@#**##############################################################################################@@##############@@@:.
                            :@@***##@@#**###############################################################################################@@@%############%@@#.
                           .%@#***#@@#**####################################%@@%#######################################################@@@@@@############@@@=.
                          .*@%***%@@#***##################################%@@@@@@@%###################################################%@@@@@@@############@@%.
                          -@@***%@@#***##################################@@@@@@@@@@@%#################################################@@@@@@@@@###########@@@=.
                         .#@#**#@@#****################################%@@@@@@@@@@@@@@@%#############################################%@@@@@@@@@@###########@@%.
                         =@%**#@@%****################################@@@@@@@@@@@@@@@@@@@%###########################################@@@@@@@@@@@@##########%@@=.
                        .@@**#@@%*****##############################%@@@@@@@@@@@@@@@@@@@@@@@########################################@@@@@@@@@@@@@@##########@@%.
                       .#@###@@%*****##############################@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################@@@@@@@@@@@@@@@@#########@@@-
                     ..#@###%@@******############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################%@@@@@@@@@@@@@@@@@#########@@#.
                    .-%@###%@@#*****############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############################%@@@@@@@@@@@@@@@@@@@########@@@:.
                ...-%@%####@@#******###########################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################%@@@@@@@@@@@@@@@@@@@@%#######%@@*.
             ..:+%@@######%@%******###########################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################@@@@@@@@@@@@@@@@@@@@@@%#######@@@.
          .#@%%%##########@@*******#########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################%@@@@@@@@@@@@@@@@@@@@@@@@%######%@@+.
           :#@%##########@@#******#########################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################%@@@@@@@@@@@@@@@@@@@@@@@@@@#######@@%.
            .+%@%#######%@%*******########################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@######%@@-.
              .+%@@%####@@#******#######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######@@#.
                .:*%@@@@@%*******######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####%@@:.
                 .....-@@********#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####@@*.
                     .=@%*******#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####@@@.
                     .%@#*******####################@@@@@@@@@@@@@@@@@@@@@@@@@@%##*******##%@@@@@@@@@@@@@@@@@@@@@@####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####@@=.
                    .+@@********###################@@@@@@@@@@@@@@@@@@@@@@#*=:...............:=*#@@@@@@@@@@@@@@@@@@#%@@@@@@@@@@@@@@#*+-:.......:-=+#%@@@@@@@@@%####@@%.
                    .@@%*******###################@@@@@@@@@@@@@@@@@@@@#-.........................-*%@@@@@@@@@@@@@@@@@@@@@@@@@@%*-....................=#@@@@@@@#####@@=.
                   .+@@********##################@@@@@@@@@@@@@@@@@@@=...............................-%@@@@@@@@@@@@@@@@@@@@@@%-..........................=@@@@@@####@@%.
                   :@@@********#################@@@@@@@@@@@@@@@@@@=...................................-@@@@@@@@@@@@@@@@@@@@-..............................+@@@@%####@@+.
                  .*@@#********################%@@@@@@@@@@@@@@@@#:..........................:=+++=:....:*@@@@@@@@@@@@@@@@*:....:=+++=:.....................:%@@@####%@@:.
                  :@@@********################%@@@@@@@@@@@@@@@@*...........................=*#%%%#*=.....+@@@@@@@@@@@@@@=.....-*#%%%#*-.....................:#@@%####@@#.
                 .*@@%********###############%@@@@@@@@@@@@@@@@#...........................-*%@@@@@%*-.....*@@@@@@@@@@@@+.....-*%@@@@@#*-.....................:@@@####%@@*.
                .=@@@*********###############@@@@@@@@@@@@@@@@@:...........................*=-@@@@@@#*.....:@@@@@@@@@@@@......*=+@@@@@@*+......................=@@@####@@@=.
                -@@@**********##############@@@@@@@@@@@@@@@@@#............................*..+@@@@@#*......#@@@@@@@@@@*.....:*..#@@@@@#*......................:@@@%####@@@=.
              .+@@@#**********#############%@@@@@@@@@@@@@@@@@*............................+-.%@@@@@*+......#@@@@@@@@@@+......*:.%@@@@@*+.......................@@@@#####@@@=.
            .-%@@@***********##############@@@@@@@@@@@@@@@@@@#............................-*#@@@@@#*:......%@@@@@@@@@@+......=*#@@@@@#*:......................:@@@@%#####@@@+.
         ..=#@@@#************#############@@@@@@@@@@@@@@@@@@@@:............................-+*###*+:......:@@@@@@@@@@@#.......=*#%%#*+:.......................=@@@@@######@@@#.
    ...:=*@@@%#*************#############%@@@@@@@@@@@@@@@@@@@@*..............................:===:........#@@@@@@@@@@@@-.......:=++=-.........................%@@@@@@######@@@%-.
 .-+*%@@@@%#****************#############@@@@@@@@@@@@@@@@@@@@@@=.........................................+@@@@@@@@@@@@@@:....................................#@@@@@@@#######%@@@*..
 -@@%**********************#############%@@@@@@@@@@@@@@@@@@@@@@@+.......................................#@@@@@@@@@@@@@@@@:..................................#@@@@@@@@@########@@@@=.
 .:%@%********************##############@@@@@@@@@@@@@@@@@@@@@@@@@%-...................................=@@@@@@@@@@@@@@@@@@@*...............................=@@@@@@@@@@@%########%@@@%+.
   .+@@#******************##############@@@@@@@@@@@@@@@@@@@@@@@@@@@#=..............................:+%@@@@@@@@@@@@@@@@@@@@@%+:..........................=#@@@@@@@@@@@@@##########%@@@@*:.
    .:%@@#****************#############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+-........................:=*@@@@@@@@@%%@@@@@@@@@@%@@@@@*-:....................-+@@@@@@@@@@@@@@@@%###########%@@@+.
      .+@@%***************#############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=-:..............::-+#@@@@@@@%#+-:::-#@@@@@@#::-+#@@@@@#=-::.........::-=*@@@@@@@@@@@@@@@@@@@@##########%@@@+.
        .#@@%*************#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*++++++*#%@@@@@@@@@@%=:::::::::::+@@@=:::::::-#@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%########%@@@=.
         .-%@@%************############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-:::::::::::::::-:::::::::::-=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######@@@@-.
          ..=%@@%**********############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+-:::::::::::::::::::::::::::::::::=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######%@@@#:.
             .=%@@%*********###########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=:::::::::::::::-+####=::::::::::::::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######@@@@=..
               .=%@@%#*******############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=::::::::::::::::+#+-::=#*::::::::::::::::-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######%@@@%-.
                 .=%@@@#******#############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+:::::::::::::::::*-:::::::*+:::::::::::::::::*@@@@@@@@@@@@@@@@@@@@@@@@@@@%######%@@@+..
                   .-%@@@%*****###############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#::::::::::::::::::-::::::::::=::::::::::::::::::=@@@@@@@@@@@@@@@@@@@@@@@@@#######@@@@:.
                    ..-#@@@@#***################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::-@@@@@@@@@@@@@@@@@@@@@@%######@@@@+..
                       .:+@@@@%#**################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::-@@@@@@@@@@@@@@@@@@@%######%@@@*:.
                         ..=#@@@@#**################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::=@@@@@@@@@@@@@@@@%######%@@@#-.
                            .:*%@@@%###################%@@@@@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::+@@@@@@@@@@@@@%#######@@@%=..
                               .-#@@@@%###################%@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=@@@@@@@@@@@%######%@@@%=..
                                ...-%@@@@@####################@@@@@@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::-#@@@@@@@@@@@%######%@@@%-..
                                   ...-#@@@@@%###################%@@@@@@@@@@@@@@@@@@@#+:::::::::::::::::::::::::::::::::::::::::::::::+%@@@@@@@@@@@%######%@@@@*:..
                                      ..:-*@@@@@@%%##################%@@@@@@@@@@@@@@@@@@%#+=:::::::::::::::::::::::::::::::::::::=*#%@@@@@@@@@@@%######%@@@@@#=..
                                          ..-+#@@@@@@%%##################%%@@@@@@@@@@@@@@@@@@%*+==-:::::::::::::::::::::::-=+*#%@@@@@@@@@@@@@%######%@@@@@*-:..
                                              ..=#%@@@@@@%%###################%@@@@@@@@@@@@@@@@@@@@@%#*+===------===+*#%@@@@@@@@@@@@@@@@@@%######%@@@@@%*-.
                                                  ..-*@@@@@@@@@%####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######%@@@@@@#-..
                                                    .....=#@@@@@@@@@@%######################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########%@@@@@@%+:...
                                                          ..::=*%@@@@@@@@@@%%#######################%%%%%@@@@@@@@@@@@%%%%############%@@@@@@@%=:..
                                                               ...-=+#%@@@@@@@@@@@@%%%##########################################%%@@@@@@%*=-:..
                                                                     ...:-+*#%@@@@@@@@@@@@@@%%%%%#########################%%%@@@@@@@%*=:..
                                                                             ...*@@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####%%@@@@@@@@%#+:..
                                                                               .*@@****#####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=:..
                                                                               .@@%****##########@#====%%###@##@%%%@@@%-:....
                                                                               -@@#****##########@#===+@#***@%=@%###@@%.
                                                                               =@@*****##########%@===#@#***%@=%@###%@@-
                                                                              .*@@*****###########@*==*%%%%%@@+@%###%@@+.
                                                                              .@@%****############%@+=====++==%@#####@@%.
                                                                              =@@#****#############@@========#@######@@@.
                                                                             .*@@*****############@@%@+=====*@#######@@@=.
                                                                             .%@@*****###########%@##@@#===#@########%@@*.
                                                                             -@@%****###########%@%##@%%%*#@##########@@%.
                                                                             =@@#****###########@%###@##%@@###########@@@-.
                                                                             +@@*****##########@@###%@##%@@###########@@@+.
                                                                            .%@@****##########@@####@%##%@@###########%@@%.
                                                                            -@@%****#########@@#####@###%@@############@@@:
                                                                            =@@#****########%@#####%@####@@############@@@=.
                                                                            #@@*****#######%@######@%####@@############%@@#.
                                                                           .%@@****#######%@######%@#####@@############%@@%.
                                                                           -@@%****######%@#######%@#####@@%############@@@-.
                                                                           =@@#****#####%@########@%#####@@%############@@@+.
                                                                           +@@#****####%@########%@######@@%############%@@#.
                                                                          .%@@****####%@#########@@######@@%############%@@@:
                                                                          :@@%****###%@##########@%######@@%#############@@@=.
                                                                          =@@%****##%%##########%@#######@@%#############@@@*.
                                                                          #@@#****#%%###########@@#######@@@#############%@@%.
                                                                         .%@@*****%############%@%#######@@@#############%@@@:
                                                                         -@@@****##############@@########%@@##############@@@+.
                                                                         -@@%****##############@%########%@@##############@@@#.
                                                                        .*@@#****#############@@#########%@@##############%@@@:
                                                                        .%@@*****#############@%#########%@@##############%@@@-.
                                                                        :@@@*****############%@##########%@@###############@@@*.
                                                                        -@@%*****############@%##########%@@###############@@@%.
                                                                        #@@#****############%@############@@###############%@@@:
                                                                       .%@@#****############@%############@@%###############@@@=.
                                                                       :@@@*****###########%@#############@@%###############@@@*.
                                                                       -@@%*****###########@%#############@@%###############@@@%.
                                                                       =@@%*****##########%@##############@@%###############%@@@:
                                                                      .#@@#*****##########@%##############@@%################@@@+.
                                                                      :@@@*****###########@###############@@%################@@@#.
*/

컴파일 시 표준 에러 (stderr) 메시지

subsequence.cpp: In function 'int main()':
subsequence.cpp:11:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |         freopen("D:/CPP/THEMIS/test.inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
subsequence.cpp:12:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |         freopen("D:/CPP/THEMIS/test.out","w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...