Submission #370660

#TimeUsernameProblemLanguageResultExecution timeMemory
370660TLP39Sails (IOI07_sails)C++14
100 / 100
86 ms8684 KiB
#include <bits/stdc++.h>
using namespace std;

int main()
{
    long long int n;
    scanf("%lld",&n);
    pair<long long int,long long int> kh[n];
    long long int k,h;
    for(long long int i=0;i<n;i++)
    {
        scanf("%lld %lld",&k,&h);
        kh[i]={k,h};
    }
    sort(kh,kh+n);
    map<long long int,long long int> change;
    long long int ma=0,mi=100001;
    auto it=change.begin();
    long long int ch,hol1;
    for(long long int i=0;i<n;i++)
    {
        k=kh[i].first;
        h=kh[i].second;
        if(k>ma && mi)
        {
            change[ma]=mi;
            mi=0;
        }
        ma=k;
        it=change.upper_bound(k-h);
        it--;
        if((*it).first==k-h)
        {
            (*it).second--;
            if((*it).second==0) change.erase(it);
            mi++;
        }
        else
        {
            ch=0;
            hol1=(*it).first;
            it++;
            if(it==change.end()) ch=1;
            if(ch)
            {
                change[h+hol1]=1;
                change[hol1]--;
                if(!change[hol1]) change.erase(hol1);
            }
            else
            {
                mi++;
                change[hol1+((*it).first)-k+h]=1;
                change[hol1]--;
                if(!change[hol1]) change.erase(hol1);
                change[(*it).first]--;
                if(!change[(*it).first]) change.erase(it);
            }
        }
    }
    long long int val=100001;
    long long int ans=0;
    for(long long int i=0;i<ma;i++)
    {
        val-=change[i];
        ans+=val*(val-1)/2;
    }
    printf("%lld",ans);
}

Compilation message (stderr)

sails.cpp: In function 'int main()':
sails.cpp:7:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    7 |     scanf("%lld",&n);
      |     ~~~~~^~~~~~~~~~~
sails.cpp:12:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   12 |         scanf("%lld %lld",&k,&h);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~
#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...