Submission #420412

#TimeUsernameProblemLanguageResultExecution timeMemory
420412PyqeAutobahn (COI21_autobahn)C++14
100 / 100
112 ms15996 KiB
#include <bits/stdc++.h>

using namespace std;

#define mp make_pair
#define fr first
#define sc second

const long long inf=1e18;
long long n,m,d,ps[2][400069];
pair<long long,pair<long long,long long>> a[400069];

int main()
{
	long long i,ii,k,l,w,c[2]={0,0},e,p,z=0;
	
	scanf("%lld%lld%lld",&n,&m,&d);
	for(i=1;i<=n;i++)
	{
		scanf("%lld%lld%lld",&k,&w,&l);
		a[i*4-3]={k-1,{0,1}};
		a[i*4-2]={k+w-1,{1,1}};
		a[i*4-1]={l,{0,-1}};
		a[i*4]={l,{1,-1}};
	}
	sort(a+1,a+n*4+1);
	for(i=1;i<=n*4;i++)
	{
		k=a[i].fr;
		e=a[i].sc.fr;
		w=a[i].sc.sc;
		for(ii=0;ii<2;ii++)
		{
			ps[ii][i]=ps[ii][i-1];
		}
		c[e]+=w;
		if(!e)
		{
			if(c[0]>=m&&c[0]-w<m)
			{
				ps[0][i]-=c[1];
				ps[1][i]-=k*c[1];
			}
			else if(c[0]<m&&c[0]-w>=m)
			{
				ps[0][i]+=c[1];
				ps[1][i]+=k*c[1];
			}
		}
		else if(c[0]>=m)
		{
			ps[0][i]-=w;
			ps[1][i]-=k*w;
		}
		p=upper_bound(a+1,a+n*4+1,mp(k-d,mp(inf,inf)))-a-1;
		z=max(z,ps[1][i]+k*-ps[0][i]-(ps[1][p]+(k-d)*-ps[0][p]));
	}
	printf("%lld\n",z);
}

Compilation message (stderr)

autobahn.cpp: In function 'int main()':
autobahn.cpp:17:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |  scanf("%lld%lld%lld",&n,&m,&d);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
autobahn.cpp:20:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |   scanf("%lld%lld%lld",&k,&w,&l);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...