Submission #279933

#TimeUsernameProblemLanguageResultExecution timeMemory
279933MKopchevTwo Antennas (JOI19_antennas)C++14
13 / 100
3048 ms25976 KiB
#include<bits/stdc++.h>
using namespace std;
const int nmax=2e5+42,inf=1e9+42;

int n,q;

int inp[nmax];

int a[nmax],b[nmax];

vector< pair<int/*left*/,int/*id*/> > seen[nmax];

int outp[nmax];

vector<int> in[nmax],out[nmax];

int value[nmax],mx[nmax];

void solve()
{
    for(int i=1;i<=n;i++)
    {
        value[i]=-inf;
        mx[i]=-inf;
    }

    for(int i=1;i<=n;i++)
    {
        for(auto k:in[i])
        {
            value[k]=-inp[k];
        }

        for(int j=max(i-b[i],1);j<=i-a[i];j++)
            mx[j]=max(mx[j],inp[i]+value[j]);

        for(auto k:seen[i])
        {
            for(int j=k.first;j<=i;j++)
            {
                outp[k.second]=max(outp[k.second],mx[j]);
            }
        }

        for(auto k:out[i])
        {
            value[k]=-inf;
        }

    }
}

int main()
{
    memset(outp,-1,sizeof(outp));

    scanf("%i",&n);

    for(int i=1;i<=n;i++)
    {
        scanf("%i%i%i",&inp[i],&a[i],&b[i]);
        if(i+a[i]<=n)in[i+a[i]].push_back(i);
        if(i+b[i]<=n)out[i+b[i]].push_back(i);
    }
    scanf("%i",&q);

    for(int i=1;i<=q;i++)
    {
        int l,r;

        scanf("%i%i",&l,&r);

        seen[r].push_back({l,i});
    }

    solve();

    for(int i=1;i<=n;i++)inp[i]=-inp[i];

    solve();

    for(int i=1;i<=q;i++)
        printf("%i\n",outp[i]);
    return 0;
}

Compilation message (stderr)

antennas.cpp: In function 'int main()':
antennas.cpp:57:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   57 |     scanf("%i",&n);
      |     ~~~~~^~~~~~~~~
antennas.cpp:61:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   61 |         scanf("%i%i%i",&inp[i],&a[i],&b[i]);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
antennas.cpp:65:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   65 |     scanf("%i",&q);
      |     ~~~~~^~~~~~~~~
antennas.cpp:71:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   71 |         scanf("%i%i",&l,&r);
      |         ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...