Submission #40523

#TimeUsernameProblemLanguageResultExecution timeMemory
40523PajarajaDivide and conquer (IZhO14_divide)C++14
100 / 100
61 ms20548 KiB
#include <bits/stdc++.h>
using namespace std;
long long x[100007],e[100007],p[100007],g[100007],maxl[100007],pg[100007];
int binarna(int l, int r,long long val)
{
	if(l==r) return l;
	int s=(l+r+1)/2;
	if(maxl[s]>=val) return binarna(s,r,val);
	return binarna(l,s-1,val);
}
int main()
{
	int n;
	long long sol=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d%d%d",&x[i],&g[i],&e[i]);
	for(int i=1;i<=n;i++) p[i]=p[i-1]+e[i];
	for(int i=1;i<=n;i++) pg[i]=pg[i-1]+g[i];
    maxl[n+1]=-1000000000;
	for(int i=n;i>0;i--) maxl[i]=max(maxl[i+1],p[i]-x[i]);
	for(int i=1;i<=n;i++)
	{
		int t=binarna(1,n,p[i-1]-x[i]);
		sol=max(sol,pg[t]-pg[i-1]);
	}
	printf("%lld",sol);
}

Compilation message (stderr)

divide.cpp: In function 'int main()':
divide.cpp:16:56: warning: format '%d' expects argument of type 'int*', but argument 2 has type 'long long int*' [-Wformat=]
  for(int i=1;i<=n;i++) scanf("%d%d%d",&x[i],&g[i],&e[i]);
                                                        ^
divide.cpp:16:56: warning: format '%d' expects argument of type 'int*', but argument 3 has type 'long long int*' [-Wformat=]
divide.cpp:16:56: warning: format '%d' expects argument of type 'int*', but argument 4 has type 'long long int*' [-Wformat=]
divide.cpp:15:16: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n);
                ^
divide.cpp:16:57: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(int i=1;i<=n;i++) scanf("%d%d%d",&x[i],&g[i],&e[i]);
                                                         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...