제출 #72893

#제출 시각아이디문제언어결과실행 시간메모리
72893zscoderCloud Computing (CEOI18_clo)C++17
100 / 100
901 ms2564 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;
 
#define fi first
#define se second
#define mp make_pair
#define pb push_back
 
typedef long long ll;
typedef pair<int,int> ii;
typedef vector<int> vi;
typedef long double ld; 
typedef tree<ii, null_type, less<ii>, rb_tree_tag, tree_order_statistics_node_update> pbds;

const int N = 111111;
ll dp[2][N];
const ll INF=ll(1e18);

void amax(ll &a, ll b)
{
	if(b>a) a=b; 
}

int main()
{
	ios_base::sync_with_stdio(0); cin.tie(0);
	int n; cin>>n;
	vector<pair<ii,ii> > vec;
	for(int i=0;i<n;i++)
	{
		int c,f,v; cin>>c>>f>>v;
		vec.pb(mp(mp(f,1),mp(c,v)));
	}
	int m; cin>>m;
	for(int i=0;i<m;i++)
	{
		int c,f,v; cin>>c>>f>>v;
		vec.pb(mp(mp(f,0),mp(c,v)));
	}
	sort(vec.rbegin(),vec.rend());
	for(int i=0;i<N;i++)
	{
		dp[0][i]=dp[1][i]=-INF;
	}
	dp[1][0] = 0;
	for(int i=0;i<vec.size();i++)
	{
		int cur=i&1; int pre=cur^1;
		int ty=vec[i].fi.se;
		int c=vec[i].se.fi;
		ll v=vec[i].se.se;
		for(int j=0;j<min(N,50*(i+2));j++)
		{
			dp[cur][j] = -INF;
		}
		for(int j=0;j<min(N,50*(i+2));j++)
		{
			if(dp[pre][j]>-INF)
			{
				ll val=dp[pre][j];
				amax(dp[cur][j], val);
				//apply operation
				if(ty) //buy
				{
					amax(dp[cur][j+c], val-v);
				}
				else
				{
					if(j>=c) amax(dp[cur][j-c],val+v);
				}
			}
		}
	}
	ll ans=0;
	for(int j=0;j<N;j++)
	{
		ans=max(ans,dp[(int(vec.size())-1)&1][j]);
	}
	cout<<ans<<'\n';
}

컴파일 시 표준 에러 (stderr) 메시지

clo.cpp: In function 'int main()':
clo.cpp:50:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<vec.size();i++)
              ~^~~~~~~~~~~
#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...