Submission #1018030

#TimeUsernameProblemLanguageResultExecution timeMemory
1018030vivkostovHoliday (IOI14_holiday)C++14
0 / 100
197 ms2140 KiB
#include<bits/stdc++.h>
#define endl '\n'
#include "holiday.h"
using namespace std;
void speed()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
}
struct cell
{
    long long int st;
    bool operator<(const cell&a)const
    {
        return st>a.st;
    }
};
priority_queue<cell>q;
long long int n,a[3005],k,st,sum;
void fil(long long int h)
{
    cell g;
    for(long long int i=h;i<=st;i++)
    {
        sum+=a[i];
        g.st=a[i];
        q.push(g);
    }
}
void read()
{
    cin>>n>>k>>st;
    cell h;
    for(long long int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    long long int p=k,otg=0;
    for(long long int i=1;i<=st;i++)
    {
        for(long long int j=st;j<=n;j++)
        {
            p-=min(st-i,j-st);
            p-=j-i;
            if(p<=0)break;
            if(j==st)
            {
                fil(i);
            }
            else
            {
                sum+=a[j];
                h.st=a[j];
                q.push(h);
            }
            while(p<q.size())
            {
                //cout<<q.top().st<<" "<<i<<" "<<j<<" "<<q.size()<<endl;
                sum-=q.top().st;
                q.pop();
            }
            p=k;
            otg=max(otg,sum);
        }
        sum=0;
        while(!q.empty())q.pop();
    }
    cout<<otg<<endl;
}
long long int findMaxAttraction(int N,int start,int d,int attraction[])
{
    n=N;
    st=start;
    k=d;
    cell h;
    for(long long int i=1;i<=n;i++)
    {
        a[i]=attraction[i-1];
    }
    long long int p=k,otg=0;
    for(long long int i=1;i<=st;i++)
    {
        for(long long int j=st;j<=n;j++)
        {
            p-=min(st-i,j-st);
            p-=j-i;
            if(p<=0)break;
            if(j==st)
            {
                fil(i);
            }
            else
            {
                sum+=a[j];
                h.st=a[j];
                q.push(h);
            }
            while(p<q.size())
            {
                sum-=q.top().st;
                q.pop();
            }
            p=k;
            otg=max(otg,sum);
        }
        sum=0;
        while(!q.empty())q.pop();
    }
    return otg;
}
/*int main()
{
    speed();
    read();
    return 0;
}
*/

Compilation message (stderr)

holiday.cpp: In function 'void read()':
holiday.cpp:57:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::priority_queue<cell>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |             while(p<q.size())
      |                   ~^~~~~~~~~
holiday.cpp: In function 'long long int findMaxAttraction(int, int, int, int*)':
holiday.cpp:99:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::priority_queue<cell>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   99 |             while(p<q.size())
      |                   ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...