답안 #44157

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
44157 2018-03-30T08:58:14 Z faustaadp Fireworks (APIO16_fireworks) C++17
19 / 100
130 ms 1656 KB
#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
ll n,m,i,ta,a[202020],has,d[330][330];
vector<ll> v[330],w[330];
ll depe(ll aa,ll bb)
{
	if(v[aa].size()==0)
		return bb;
	if(d[aa][bb]==-1)
	{
		d[aa][bb]=0;
		ll ii,jj;
		for(jj=0;jj<v[aa].size();jj++)	
		{
			ll hh=1e18;
			for(ii=0;ii<=bb;ii++)
				hh=min(hh,depe(v[aa][jj],ii)+abs(w[aa][jj]-(bb-ii)));	
			d[aa][bb]+=hh;
		}
	}
	return d[aa][bb];
}
ll hey(ll aa)
{
	ll ii,h=0;
	for(ii=2;ii<=n+m;ii++)
		h+=abs(a[ii]-aa);
	return h;
}
int main()
{
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n>>m;
	for(i=2;i<=n+m;i++)
	{
		cin>>ta>>a[i];
		v[ta].pb(i);
		w[ta].pb(a[i]);
	}
	has=1e18;
	if(n+m<=300)
	{
		memset(d,-1,sizeof(d));
		for(i=0;i<=300;i++)
			has=min(has,depe(1,i));
		//cout<<depe(4,3)<<"\n";
		//cout<<depe(1,14)<<"\n";
		cout<<has<<"\n";
	}
	else
	{
		ll L=0,R=10000000000000000,C1,C2,CC1,CC2;
		while(L<=R)
		{
			C1=L+(R-L)/3;
			C2=R-(R-L)/3;
			CC1=hey(C1);
			CC2=hey(C2);
			if(CC1<CC2)
				R=C2-1;
			else
				L=C1+1;
			has=min(has,min(CC1,CC2));
		}
		cout<<has<<"\n";
	}
}

Compilation message

fireworks.cpp: In function 'long long int depe(long long int, long long int)':
fireworks.cpp:18:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(jj=0;jj<v[aa].size();jj++) 
            ~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 1144 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 1252 KB Output is correct
2 Correct 13 ms 1392 KB Output is correct
3 Correct 20 ms 1532 KB Output is correct
4 Correct 31 ms 1532 KB Output is correct
5 Correct 36 ms 1532 KB Output is correct
6 Correct 37 ms 1532 KB Output is correct
7 Correct 48 ms 1568 KB Output is correct
8 Correct 50 ms 1568 KB Output is correct
9 Correct 56 ms 1568 KB Output is correct
10 Correct 68 ms 1568 KB Output is correct
11 Correct 66 ms 1568 KB Output is correct
12 Correct 75 ms 1568 KB Output is correct
13 Correct 77 ms 1568 KB Output is correct
14 Correct 88 ms 1568 KB Output is correct
15 Correct 130 ms 1568 KB Output is correct
16 Correct 95 ms 1568 KB Output is correct
17 Correct 112 ms 1568 KB Output is correct
18 Correct 108 ms 1568 KB Output is correct
19 Correct 83 ms 1656 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 1144 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 1144 KB Output isn't correct
2 Halted 0 ms 0 KB -