Submission #1233299

#TimeUsernameProblemLanguageResultExecution timeMemory
1233299hoangmc2009Birthday gift (IZhO18_treearray)C++17
56 / 100
943 ms30404 KiB
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int n,m,q,a[200009],seg[2000009];
int tin[200009],tout[200009],par[20][200009],Tm=0;
vector<int> adj[200009];
void dfs(int u,int pu)
{
    tin[u]=++Tm; par[0][u]=pu;
    for(int& v:adj[u])
        if(v!=pu) dfs(v,u);
    tout[u]=Tm;
}
bool isA(int u,int v) {return tin[u]<=tin[v] and tout[v]<=tout[u];}
int lca(int u,int v)
{
    if(isA(u,v)) return u;
    if(isA(v,u)) return v;
    for(int i=19;i>=0;--i)
    {
        if(!isA(par[i][u],v))
            u=par[i][u];
    }
    return par[0][u];
}
void build(int node,int l,int r)
{
    if(l==r) seg[node]=a[l];
    else
    {
        build(2*node,l,(l+r)/2);
        build(2*node+1,(l+r)/2+1,r);
        seg[node]=min(seg[2*node],seg[2*node+1]);
    }
}
void update(int node,int tl,int tr,int i,int v)
{
    if(tr<i or i<tl) return;
    if(tl==tr) seg[node]=v;
    else
    {
        update(2*node,tl,(tl+tr)/2,i,v);
        update(2*node+1,(tl+tr)/2+1,tr,i,v);
        seg[node]=min(seg[2*node],seg[2*node+1]);
    }
}
int get(int node,int tl,int tr,int l,int r)
{
    if(tr<l or r<tl) return 2e9;
    if(l<=tl and tr<=r) return seg[node];
    return min(get(2*node,tl,(tl+tr)/2,l,r),get(2*node+1,(tl+tr)/2+1,tr,l,r));
}
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>>m>>q;
    for(int u,v,i=1;i<n;++i)
    {
        cin>>u>>v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    dfs(1,0); par[0][1]=1;
    for(int i=1;i<20;++i) for(int j=1;j<=n;++j)
        par[i][j]=par[i-1][par[i-1][j]];
    for(int i=1;i<2*m;i+=2)
    {
        cin>>a[i];
        if(i>1) a[i-1]=lca(a[i],a[i-2]);
    }
    build(1,1,2*m-1);
    for(int c,l,r,v;q>0;--q)
    {
        cin>>c;
        if(c==1)
        {
            cin>>l>>v;
            a[2*l-1]=v; update(1,1,2*m-1,2*l-1,v);
            if(l>1)
            {
                a[2*l-2]=lca(a[2*l-3],a[2*l-1]);
                update(1,1,2*m-1,2*l-2,a[2*l-2]);
            }
            if(l<m)
            {
                a[2*l]=lca(a[2*l+1],a[2*l-1]);
                update(1,1,2*m-1,2*l,a[2*l]);
            }
        }
        else
        {
            cin>>l>>r>>v;
            /*int ll=2*l-1,rr=2*r-1,mid;
            while(ll<=rr)
            {
                mid=(ll+rr)/2;
                if(get(1,1,2*m-1,2*l-1,mid)>v) ll=mid+1;
                else rr=mid-1;
            }
            if(ll==2*r or get(1,1,2*m-1,2*l-1,ll)!=v) cout<<"-1 -1\n";
            else
            {
                if(ll&1) cout<<(ll+1)/2<<" "<<(ll+1)/2<<"\n";
                else cout<<ll/2<<" "<<ll/2+1<<"\n";
            }*/
            for(int i=2*l-1;i<=2*r;++i)
            {
                if(i==2*r) cout<<"-1 -1\n";
                else if(a[i]==v)
                {
                    if(i&1) cout<<(i+1)/2<<" "<<(i+1)/2<<"\n";
                    else cout<<i/2<<" "<<i/2+1<<"\n";
                    break;
                }
            }
        }
    }
}
/*
                                                                                                   ........................
                                                                                            ..::-+**#%@@@@@@@@@@@@@@@@@@%#**+::..
                                                                                  ..:=++#%%@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@@%+.
                                                                           ..:-+*#%@@@@@@@@%%%%##############################%%@@@@*:.
                                                                     ..:-+*%@@@@@@@%%%##########################################%@@@@+:.
                                                                ..:=+%@@@@@@%%#####################################################@@@@+..
                                                          ....-+%@@@@@@%#############################################################@@@@=..
                                                        ..=#@@@@@%%###################################################################%@@@%-.
                                                    .:+#%@@@@%%#########################################################################%@@@#:.
                                                .:=*%@@@%%###############################################################################%@@@@-.
                                            ..-*%@@@%%#####################################################################################%@@@=.
                                          ..+@@@@###########################################################################################%@@@*..
                                         .*@@@#*##############################################################################################@@@%.
                                       .+@@@#**################################################################################################@@@%:.
                                     .-%@@#**####%##############################################################################################%@@%:.
                                    .+@@#***###%%################################################################################################%@@@-.
                                   :#@%****###%%*#################################################################################################%@@@-.
                                  -@@%****###@%*###################################################################################################%@@@-.
                                 -@@#***###%@#*#####################################################################################################%@@@=.
                                -@@#***###@@#*#######################################################################################################@@@%-.
                               :@@#***###@%**#########################################################################################################@@@+.
                              :%@#***##%@%**##########################################################################################################%@@@.
                             .#@%***##%@%**############################################################################################################%@@*.
                            .+@%***##@@#**##############################################################################################@@##############@@@:.
                            :@@***##@@#**###############################################################################################@@@%############%@@#.
                           .%@#***#@@#**####################################%@@%#######################################################@@@@@@############@@@=.
                          .*@%***%@@#***##################################%@@@@@@@%###################################################%@@@@@@@############@@%.
                          -@@***%@@#***##################################@@@@@@@@@@@%#################################################@@@@@@@@@###########@@@=.
                         .#@#**#@@#****################################%@@@@@@@@@@@@@@@%#############################################%@@@@@@@@@@###########@@%.
                         =@%**#@@%****################################@@@@@@@@@@@@@@@@@@@%###########################################@@@@@@@@@@@@##########%@@=.
                        .@@**#@@%*****##############################%@@@@@@@@@@@@@@@@@@@@@@@########################################@@@@@@@@@@@@@@##########@@%.
                       .#@###@@%*****##############################@@@@@@@@@@@@@@@@@@@@@@@@@@@#####################################@@@@@@@@@@@@@@@@#########@@@-
                     ..#@###%@@******############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##################################%@@@@@@@@@@@@@@@@@#########@@#.
                    .-%@###%@@#*****############################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############################%@@@@@@@@@@@@@@@@@@@########@@@:.
                ...-%@%####@@#******###########################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%############################%@@@@@@@@@@@@@@@@@@@@%#######%@@*.
             ..:+%@@######%@%******###########################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##########################@@@@@@@@@@@@@@@@@@@@@@%#######@@@.
          .#@%%%##########@@*******#########################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######################%@@@@@@@@@@@@@@@@@@@@@@@@%######%@@+.
           :#@%##########@@#******#########################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@####################%@@@@@@@@@@@@@@@@@@@@@@@@@@#######@@%.
            .+%@%#######%@%*******########################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@######%@@-.
              .+%@@%####@@#******#######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@###############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######@@#.
                .:*%@@@@@%*******######################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####%@@:.
                 .....-@@********#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####@@*.
                     .=@%*******#####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#######@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####@@@.
                     .%@#*******####################@@@@@@@@@@@@@@@@@@@@@@@@@@%##*******##%@@@@@@@@@@@@@@@@@@@@@@####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#####@@=.
                    .+@@********###################@@@@@@@@@@@@@@@@@@@@@@#*=:...............:=*#@@@@@@@@@@@@@@@@@@#%@@@@@@@@@@@@@@#*+-:.......:-=+#%@@@@@@@@@%####@@%.
                    .@@%*******###################@@@@@@@@@@@@@@@@@@@@#-.........................-*%@@@@@@@@@@@@@@@@@@@@@@@@@@%*-....................=#@@@@@@@#####@@=.
                   .+@@********##################@@@@@@@@@@@@@@@@@@@=...............................-%@@@@@@@@@@@@@@@@@@@@@@%-..........................=@@@@@@####@@%.
                   :@@@********#################@@@@@@@@@@@@@@@@@@=...................................-@@@@@@@@@@@@@@@@@@@@-..............................+@@@@%####@@+.
                  .*@@#********################%@@@@@@@@@@@@@@@@#:..........................:=+++=:....:*@@@@@@@@@@@@@@@@*:....:=+++=:.....................:%@@@####%@@:.
                  :@@@********################%@@@@@@@@@@@@@@@@*...........................=*#%%%#*=.....+@@@@@@@@@@@@@@=.....-*#%%%#*-.....................:#@@%####@@#.
                 .*@@%********###############%@@@@@@@@@@@@@@@@#...........................-*%@@@@@%*-.....*@@@@@@@@@@@@+.....-*%@@@@@#*-.....................:@@@####%@@*.
                .=@@@*********###############@@@@@@@@@@@@@@@@@:...........................*=-@@@@@@#*.....:@@@@@@@@@@@@......*=+@@@@@@*+......................=@@@####@@@=.
                -@@@**********##############@@@@@@@@@@@@@@@@@#............................*..+@@@@@#*......#@@@@@@@@@@*.....:*..#@@@@@#*......................:@@@%####@@@=.
              .+@@@#**********#############%@@@@@@@@@@@@@@@@@*............................+-.%@@@@@*+......#@@@@@@@@@@+......*:.%@@@@@*+.......................@@@@#####@@@=.
            .-%@@@***********##############@@@@@@@@@@@@@@@@@@#............................-*#@@@@@#*:......%@@@@@@@@@@+......=*#@@@@@#*:......................:@@@@%#####@@@+.
         ..=#@@@#************#############@@@@@@@@@@@@@@@@@@@@:............................-+*###*+:......:@@@@@@@@@@@#.......=*#%%#*+:.......................=@@@@@######@@@#.
    ...:=*@@@%#*************#############%@@@@@@@@@@@@@@@@@@@@*..............................:===:........#@@@@@@@@@@@@-.......:=++=-.........................%@@@@@@######@@@%-.
 .-+*%@@@@%#****************#############@@@@@@@@@@@@@@@@@@@@@@=.........................................+@@@@@@@@@@@@@@:....................................#@@@@@@@#######%@@@*..
 -@@%**********************#############%@@@@@@@@@@@@@@@@@@@@@@@+.......................................#@@@@@@@@@@@@@@@@:..................................#@@@@@@@@@########@@@@=.
 .:%@%********************##############@@@@@@@@@@@@@@@@@@@@@@@@@%-...................................=@@@@@@@@@@@@@@@@@@@*...............................=@@@@@@@@@@@%########%@@@%+.
   .+@@#******************##############@@@@@@@@@@@@@@@@@@@@@@@@@@@#=..............................:+%@@@@@@@@@@@@@@@@@@@@@%+:..........................=#@@@@@@@@@@@@@##########%@@@@*:.
    .:%@@#****************#############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+-........................:=*@@@@@@@@@%%@@@@@@@@@@%@@@@@*-:....................-+@@@@@@@@@@@@@@@@%###########%@@@+.
      .+@@%***************#############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=-:..............::-+#@@@@@@@%#+-:::-#@@@@@@#::-+#@@@@@#=-::.........::-=*@@@@@@@@@@@@@@@@@@@@##########%@@@+.
        .#@@%*************#############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*++++++*#%@@@@@@@@@@%=:::::::::::+@@@=:::::::-#@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%########%@@@=.
         .-%@@%************############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=-:::::::::::::::-:::::::::::-=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######@@@@-.
          ..=%@@%**********############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+-:::::::::::::::::::::::::::::::::=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######%@@@#:.
             .=%@@%*********###########%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=:::::::::::::::-+####=::::::::::::::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%######@@@@=..
               .=%@@%#*******############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=::::::::::::::::+#+-::=#*::::::::::::::::-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@######%@@@%-.
                 .=%@@@#******#############%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+:::::::::::::::::*-:::::::*+:::::::::::::::::*@@@@@@@@@@@@@@@@@@@@@@@@@@@%######%@@@+..
                   .-%@@@%*****###############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#::::::::::::::::::-::::::::::=::::::::::::::::::=@@@@@@@@@@@@@@@@@@@@@@@@@#######@@@@:.
                    ..-#@@@@#***################@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=::::::::::::::::::::::::::::::::::::::::::::::::::-@@@@@@@@@@@@@@@@@@@@@@%######@@@@+..
                       .:+@@@@%#**################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-::::::::::::::::::::::::::::::::::::::::::::::::::::-@@@@@@@@@@@@@@@@@@@%######%@@@*:.
                         ..=#@@@@#**################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:::::::::::::::::::::::::::::::::::::::::::::::::::::::=@@@@@@@@@@@@@@@@%######%@@@#-.
                            .:*%@@@%###################%@@@@@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::+@@@@@@@@@@@@@%#######@@@%=..
                               .-#@@@@%###################%@@@@@@@@@@@@@@@@@@@@@@*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=@@@@@@@@@@@%######%@@@%=..
                                ...-%@@@@@####################@@@@@@@@@@@@@@@@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::::-#@@@@@@@@@@@%######%@@@%-..
                                   ...-#@@@@@%###################%@@@@@@@@@@@@@@@@@@@#+:::::::::::::::::::::::::::::::::::::::::::::::+%@@@@@@@@@@@%######%@@@@*:..
                                      ..:-*@@@@@@%%##################%@@@@@@@@@@@@@@@@@@%#+=:::::::::::::::::::::::::::::::::::::=*#%@@@@@@@@@@@%######%@@@@@#=..
                                          ..-+#@@@@@@%%##################%%@@@@@@@@@@@@@@@@@@%*+==-:::::::::::::::::::::::-=+*#%@@@@@@@@@@@@@%######%@@@@@*-:..
                                              ..=#%@@@@@@%%###################%@@@@@@@@@@@@@@@@@@@@@%#*+===------===+*#%@@@@@@@@@@@@@@@@@@%######%@@@@@%*-.
                                                  ..-*@@@@@@@@@%####################%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######%@@@@@@#-..
                                                    .....=#@@@@@@@@@@%######################%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%########%@@@@@@%+:...
                                                          ..::=*%@@@@@@@@@@%%#######################%%%%%@@@@@@@@@@@@%%%%############%@@@@@@@%=:..
                                                               ...-=+#%@@@@@@@@@@@@%%%##########################################%%@@@@@@%*=-:..
                                                                     ...:-+*#%@@@@@@@@@@@@@@%%%%%#########################%%%@@@@@@@%*=:..
                                                                             ...*@@%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%####%%@@@@@@@@%#+:..
                                                                               .*@@****#####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@#=:..
                                                                               .@@%****##########@#====%%###@##@%%%@@@%-:....
                                                                               -@@#****##########@#===+@#***@%=@%###@@%.
                                                                               =@@*****##########%@===#@#***%@=%@###%@@-
                                                                              .*@@*****###########@*==*%%%%%@@+@%###%@@+.
                                                                              .@@%****############%@+=====++==%@#####@@%.
                                                                              =@@#****#############@@========#@######@@@.
                                                                             .*@@*****############@@%@+=====*@#######@@@=.
                                                                             .%@@*****###########%@##@@#===#@########%@@*.
                                                                             -@@%****###########%@%##@%%%*#@##########@@%.
                                                                             =@@#****###########@%###@##%@@###########@@@-.
                                                                             +@@*****##########@@###%@##%@@###########@@@+.
                                                                            .%@@****##########@@####@%##%@@###########%@@%.
                                                                            -@@%****#########@@#####@###%@@############@@@:
                                                                            =@@#****########%@#####%@####@@############@@@=.
                                                                            #@@*****#######%@######@%####@@############%@@#.
                                                                           .%@@****#######%@######%@#####@@############%@@%.
                                                                           -@@%****######%@#######%@#####@@%############@@@-.
                                                                           =@@#****#####%@########@%#####@@%############@@@+.
                                                                           +@@#****####%@########%@######@@%############%@@#.
                                                                          .%@@****####%@#########@@######@@%############%@@@:
                                                                          :@@%****###%@##########@%######@@%#############@@@=.
                                                                          =@@%****##%%##########%@#######@@%#############@@@*.
                                                                          #@@#****#%%###########@@#######@@@#############%@@%.
                                                                         .%@@*****%############%@%#######@@@#############%@@@:
                                                                         -@@@****##############@@########%@@##############@@@+.
                                                                         -@@%****##############@%########%@@##############@@@#.
                                                                        .*@@#****#############@@#########%@@##############%@@@:
                                                                        .%@@*****#############@%#########%@@##############%@@@-.
                                                                        :@@@*****############%@##########%@@###############@@@*.
                                                                        -@@%*****############@%##########%@@###############@@@%.
                                                                        #@@#****############%@############@@###############%@@@:
                                                                       .%@@#****############@%############@@%###############@@@=.
                                                                       :@@@*****###########%@#############@@%###############@@@*.
                                                                       -@@%*****###########@%#############@@%###############@@@%.
                                                                       =@@%*****##########%@##############@@%###############%@@@:
                                                                      .#@@#*****##########@%##############@@%################@@@+.
                                                                      :@@@*****###########@###############@@%################@@@#.
*/

Compilation message (stderr)

treearray.cpp: In function 'int main()':
treearray.cpp:57:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   57 |         freopen("D:/CPP/THEMIS/test.inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
treearray.cpp:58:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   58 |         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...