Submission #959628

#TimeUsernameProblemLanguageResultExecution timeMemory
959628AndreiBOTOBuilding 4 (JOI20_building4)C++14
0 / 100
2 ms2512 KiB
#include <bits/stdc++.h>

#pragma optimize GCC ("Ofast")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")

///#include <tryhardmode>
///#include <GODMODE::ON>

using namespace std;

#define INT LONG LONG

const int INF=1e10;
const int NMAX=1e6+5;

long long dp[NMAX][2];
int v[NMAX][2];

int n;

void get_dp(int x)
{
    int i,j,k;
    for(i=1;i<=n;i++)
        for(j=0;j<2;j++)
            dp[i][j]=-INF;
    for(i=n;i>0;i--)
    {
        for(j=0;j<2;j++)
        {
            for(k=0;k<2;k++)
            {
                if(v[i-1][j]<v[i][k])
                {
                    if(k==x)
                        dp[i][j]=max(dp[i][j],dp[i+1][k]+1);
                    else
                        dp[i][j]=max(dp[i][j],dp[i+1][k]);
                }
            }
        }
    }
}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int i,k;
    cin>>n;
    n*=2;
    for(k=0;k<2;k++)
    {
        for(i=1;i<=n;i++)
            cin>>v[i][k];
    }
    for(i=1;i>=0;i--)
    {
        get_dp(i);
        if(dp[1][0]<n/2)
        {
            cout<<-1;
            exit(0);
        }
    }
    int curr=0,kon=n/2;
    for(i=1;i<=n;i++)
    {
        if(v[i][1]>=curr && dp[i+1][1]>=kon)
        {
            cout<<"B";
            curr=v[i][1];
        }
        else
        {
            cout<<"A";
            kon--;
            curr=v[i][0];
        }
    }
    return 0;
}

Compilation message (stderr)

building4.cpp:3: warning: ignoring '#pragma optimize GCC' [-Wunknown-pragmas]
    3 | #pragma optimize GCC ("Ofast")
      | 
building4.cpp:14:15: warning: overflow in conversion from 'double' to 'int' changes value from '1.0e+10' to '2147483647' [-Woverflow]
   14 | const int INF=1e10;
      |               ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...