Submission #1271760

#TimeUsernameProblemLanguageResultExecution timeMemory
1271760cbnk32_tuandungUnija (COCI17_unija)C++17
100 / 100
199 ms29152 KiB
/*  _  _   ___   __  ___  ___  _  _  ___  __   ___     _   _  ___   ___  __   _____  _  _  ___       */
/* | || | /_\ \ / / / __|/ _ \| \| |/ __| \ \ / /_\   | | | |/ _ \ / __| \ \ / / _ \| \| |/ __|      */
/* | __ |/ _ \ V /  \__ \ (_) | .` | (_ |  \ V / _ \  | |_| | (_) | (__   \ V / (_) | .` | (_ |      */
/* |_||_/_/_\_\_|___|___/\___/|_|\_|\___|   \_/_/_\_\ _\___/ \___/ \___| _ \_/_\___/|_|\_|\___| ___  */
/* |   \| __| |_   _| || | /_\ \ / / |   \ / _ \_ _| |  \/  | __| \| | || | |  \/  |/ _ \| \| |/ __| */
/* | |) | _|    | | | __ |/ _ \ V /  | |) | (_) | |  | |\/| | _|| .` | __ | | |\/| | (_) | .` | (_ | */
/* |___/|___|   |_| |_||_/_/ \_\_|   |___/ \___/___| |_|  |_|___|_|\_|_||_| |_|  |_|\___/|_|\_|\___| */

#include <bits/stdc++.h>
using namespace std;

/*
 
 run
 g++ A_MORNING_16_6_25.cpp -o run.exe && ./run.exe
 g++ A_MORNING_16_6_25.cpp -std=c++1y -o run.exe && ./run.exe
 
 */

#define int long long

// CONSTANTs

const int MAXN = 1000009;

// GIVEN

int N;
pair<int, int> A[MAXN];

// VARIABLEs

// pair<int, int> nen[MAXN << 1];
int maxH[5000009];
int maxX = 0;

// FUNCTIONs

// void compress() {
//     int tmp = 1;
//     sort(nen + 1, nen + 1 + N + N);
//     if (nen[1].second <= N) A[nen[1].second].first = 1;
//     else A[nen[1].second - N].second = 1;
//     for (int i = 2; i <= N + N; ++i) {
//         tmp += nen[i].first != nen[i - 1].first;
//         if (nen[i].second <= N) A[nen[i].second].first = tmp;
//         else A[nen[i].second - N].second = tmp;
//     }
// }

void maximise(int &abc, int xyz) {
    if (abc < xyz) abc = xyz;
}

// MAIN

signed main() {
    ios_base::sync_with_stdio(1+1==3);
    cin.tie(nullptr); cout.tie(nullptr);
    srand((unsigned int)time(nullptr));

    cin >> N;
    for (int i = 1; i <= N; ++i) {
        cin >> A[i].first >> A[i].second;
        maximise(maxH[A[i].first >> 1], A[i].second);
        maximise(maxX, A[i].first >> 1);
        // cin >> nen[i].first >> nen[i + N].first;
        // nen[i].second = i;
        // nen[i + N].second = N + i;
    }
    // compress();

    for (int i = maxX; i; --i) {
        maximise(maxH[i - 1], maxH[i]);
    }

    unsigned long long res = 0;

    for (int i = 1; i <= maxX; ++i) res += 2ll * maxH[i];

    cout << res;
    
    cerr << "\nTime elapsed: " << (1.0 * clock() / CLOCKS_PER_SEC) << " s.";
}

/*
 Rubi-channnnn~~~
 Haiiii~~~
 Nani ga suki?
 Choco minto... yori mo anata~
 
 Ayumu-channnnn~~~
 Haiiiii~~~
 Nani ga suki?
 Suturuberi fureiba yori mo anata~
 
 Shiki-channnn~~~
 Haiiiii~~~~
 Nani ga suki?
 Kukkie ando krimu yori mo anata~
 
 Minaaaa~~~
 Haiiiiii~~~
 Nani ga suki?
 Mochrion daisuki AI♡SCREAM
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...