제출 #703066

#제출 시각아이디문제언어결과실행 시간메모리
703066LucaLucaMSails (IOI07_sails)C++17
40 / 100
1072 ms7284 KiB
#include <bits/stdc++.h>

using namespace std;

/**
luam fiecare sail in ordine crescatoare dupa inaltime:
luam cele mai putin frecvente k inaltimi
adunam la raspuns
**/

const int NMAX = 1e5;

struct sail
{
    int x, y;

    bool operator < (const sail aux) const
    {
        if (x == aux.x)
            return y > aux.y;
        return x < aux.x;
    }
};

sail a[NMAX + 5];

int f[NMAX + 5];

multiset<pair<int, int>>st;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n;
    cin >> n;

    for (int i=1; i<=n; i++)
        cin >> a[i].x >> a[i].y;

    sort(a+1, a+n+1);

    long long ans = 0;

    for (int i=1; i<=n; i++)
    {
        for (int j=a[i-1].x+1; j<=a[i].x; j++)
            st.insert({0, j});

        vector<pair<int, int>>temp;

        for (int step=0; step<a[i].y; step++)
        {
            int aux2 = (*st.begin()).second;

            f[aux2]++;
            int aux1 = (*st.begin()).first;
            aux1++;
            st.erase(*st.begin());
            temp.push_back({aux1, aux2});
        }

        for (int step=0; step<a[i].y; step++)
        {
            st.insert({temp[step].first, temp[step].second});
        }
    }

    for (int i=1; i<=NMAX; i++)
        ans += (long long) f[i] * (f[i] - 1) / 2;

    cout << ans;

    return 0;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...