제출 #1362343

#제출 시각아이디문제언어결과실행 시간메모리
13623434o2aSails (IOI07_sails)C++20
100 / 100
56 ms1488 KiB
#include <bits/stdc++.h>
#define pb push_back
#define fi first
#define se second
#define _F "what"
using namespace std;
typedef long long ll;

constexpr int N = 1e5 + 67;

int n, bit[N];
pair<int, int> a[N];

void add_d(int i, int x)
{
    for (; i <= a[n].fi; i |= i+1)
        bit[i] += x;
}

int sum(int i)
{
    int res = 0;
    for (; i >= 1; i = (i & (i+1)) - 1)
        res += bit[i];
    return res;
}

void add(int l, int r, int x)
{
    add_d(l, x);
    add_d(r+1, -x);
}

int getv(int i)
{
    return sum(i);
}

void solve()
{
    cin>>n;
    for (int i = 1; i <= n; ++i)
        cin>>a[i].fi>>a[i].se;
    sort(a+1, a+n+1);
    for (int i = 1; i <= n; ++i)
    {
        int h = a[i].fi, k = a[i].se;
        int x = getv(h-k+1);
        int l = h-k+1, r = h+1;
        while (r-l > 1)
        {
            int mid = (l+r)/2;
            if (getv(mid) == x)
                l = mid;
            else
                r = mid;
        }
        add(r, h, 1);
        int len = r - (h-k+1);
        l = 0, r = h-k+1;
        while (r-l > 1)
        {
            int mid = (l+r)/2;
            if (getv(mid) == x)
                r = mid;
            else
                l = mid;
        }
        add(r, r+len-1, 1);
    }
    ll res = 0;
    for (int i = 1; i <= a[n].fi; ++i)
    {
        ll cnt = getv(i);
        res += cnt*(cnt-1)/2;
    }
    cout<<res;
}

int main()
{
    if (fopen(_F".INP", "r"))
    {
        freopen(_F".INP", "r", stdin);
        freopen(_F".OUT", "w", stdout);
    }
    else if (fopen("test.inp", "r"))
    {
        freopen("test.inp", "r", stdin);
        //freopen("test.out", "w", stdout);
    }
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int Test = 1; //cin>>Test;
    while (Test--) solve();
}

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

sails.cpp: In function 'int main()':
sails.cpp:84:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   84 |         freopen(_F".INP", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
sails.cpp:85:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   85 |         freopen(_F".OUT", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
sails.cpp:89:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   89 |         freopen("test.inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…