제출 #418428

#제출 시각아이디문제언어결과실행 시간메모리
418428EncryptingWolf모임들 (IOI18_meetings)C++14
0 / 100
5559 ms7492 KiB
#include <vector>
#include <iostream>
#include <queue>
#include <algorithm>
typedef long long ll;
#define FOR(i,x,y) for (ll i = x; i<y; i++)
using namespace std;



vector<long long> minimum_costs(vector<int> H, vector<int> L, vector<int> R)
{

	vector<ll> ou;


	FOR(Z, 0, L.size())
	{
		vector<pair<ll, ll>> monSL;
		vector<pair<ll, ll>> monSR;
		vector<ll> distL;
		vector<ll> distR;

		vector<int> nH;

		FOR(i, L[Z], R[Z] + 1)
		{
			nH.push_back(H[i]);
		}
		distL.resize(nH.size());
		distR.resize(nH.size());
		FOR(i, 0,nH.size())
		{
			while (true)
			{
				if (monSL.size() == 0)
					break;
				else
				{
					if (nH[i] < monSL[monSL.size() - 1].first)
					{
						break;
					}
				}
				monSL.pop_back();
			}
			monSL.push_back({ nH[i],i });
			if (monSL.size() == 1)
			{
				distL[i] = monSL[0].first*(i + 1);
			}
			else
			{
				distL[i] = monSL[monSL.size() - 1].first*(monSL[monSL.size() - 1].second - monSL[monSL.size() - 2].second) + distL[monSL[monSL.size() - 2].second];
			}
		}
		reverse(nH.begin(),nH.end());
		FOR(i, 0, nH.size())
		{
			while (true)
			{
				if (monSR.size() == 0)
					break;
				else
				{
					if (nH[i] < monSR[monSR.size() - 1].first)
					{
						break;
					}
				}
				monSR.pop_back();
			}
			monSR.push_back({ nH[i],i });
			if (monSR.size() == 1)
			{
				distR[i] = monSR[0].first*(i + 1);
			}
			else
			{
				distR[i] = monSR[monSR.size() - 1].first*(monSR[monSR.size() - 1].second - monSR[monSR.size() - 2].second) + distR[monSR[monSR.size() - 2].second];
			}
		}
		reverse(nH.begin(), nH.end());
		reverse(distR.begin(), distR.end());
		ll mi = 1e9;
		FOR(i, 0, nH.size())
			mi = min(mi, distL[i] + distR[i]-nH[i]);
		ou.push_back(mi);
	}
	/*FOR(i, 0, ou.size())
	{
		cout << ou[i] << ' ';
	}*/
	return ou;
}

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

meetings.cpp: In function 'std::vector<long long int> minimum_costs(std::vector<int>, std::vector<int>, std::vector<int>)':
meetings.cpp:6:36: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    6 | #define FOR(i,x,y) for (ll i = x; i<y; i++)
......
   17 |  FOR(Z, 0, L.size())
      |      ~~~~~~~~~~~~~~                 
meetings.cpp:17:2: note: in expansion of macro 'FOR'
   17 |  FOR(Z, 0, L.size())
      |  ^~~
meetings.cpp:6:36: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    6 | #define FOR(i,x,y) for (ll i = x; i<y; i++)
......
   32 |   FOR(i, 0,nH.size())
      |       ~~~~~~~~~~~~~~                
meetings.cpp:32:3: note: in expansion of macro 'FOR'
   32 |   FOR(i, 0,nH.size())
      |   ^~~
meetings.cpp:6:36: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    6 | #define FOR(i,x,y) for (ll i = x; i<y; i++)
......
   58 |   FOR(i, 0, nH.size())
      |       ~~~~~~~~~~~~~~~               
meetings.cpp:58:3: note: in expansion of macro 'FOR'
   58 |   FOR(i, 0, nH.size())
      |   ^~~
meetings.cpp:6:36: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    6 | #define FOR(i,x,y) for (ll i = x; i<y; i++)
......
   86 |   FOR(i, 0, nH.size())
      |       ~~~~~~~~~~~~~~~               
meetings.cpp:86:3: note: in expansion of macro 'FOR'
   86 |   FOR(i, 0, nH.size())
      |   ^~~
#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...