Submission #1477326


Source Code Expand

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <cfloat>
#include <cstring>
#include <map>
#include <utility>
#include <set>
#include <iostream>
#include <memory>
#include <string>
#include <vector>
#include <list>
#include <algorithm>
#include <functional>
#include <sstream>
#include <complex>
#include <stack>
#include <queue>
#include <unordered_set>
#include <unordered_map>
#include <array>
#include <cassert>
#include <bitset>
using namespace std;
using LL = long long;

LL W, H, Q;
struct B
{
	LL pos, tim, wid;
	B(LL p, LL t, LL w) :pos(p), tim(t), wid(w)
	{}
};
vector<B>xbeam, ybeam;

LL walk(vector<B>& beam, LL span)
{
	sort(beam.begin(), beam.end(), [](const B&b1, const B&b2)
	{
		if (b1.tim == b2.tim)return b1.pos < b2.pos;
		return b1.tim < b2.tim;
	});
	for (auto itr = beam.begin(); itr != beam.end() && (itr + 1) != beam.end(); ++itr)
	{
		auto nxt = itr + 1;
		while (nxt != beam.end() && itr->tim == nxt->tim && itr->pos + itr->wid >= nxt->pos)
		{
			itr->wid++;
			nxt = beam.erase(nxt);
		}
	}
	vector<LL>dp(span, 0);
	for (auto b : beam)
	{
		LL lef = b.pos - 1;
		LL rht = b.pos + b.wid;
		LL lval = (lef < 0) ? INT_MAX : dp[lef];
		LL rval = (rht >= span) ? INT_MAX : dp[rht];
		for (LL i = lef + 1; i < rht; ++i)
		{
			LL val = min(lval + abs(i - lef), rval + abs(i - rht));
			dp[i] = val;
		}
	}
	LL ans = INT_MAX;
	for (auto elm : dp)ans = min(ans, elm);
	return (ans == INT_MAX) ? -1 : ans;
}

int main(void)
{
	cin >> W >> H >> Q;
	for (int i = 0; i < Q; ++i)
	{
		LL t, d, x;
		cin >> t >> d >> x;
		--x;
		if (d == 0)
		{
			xbeam.push_back(B(x, t, 1));
		}
		else
		{
			ybeam.push_back(B(x, t, 1));
		}
	}
	LL r1 = walk(xbeam, W);
	LL r2 = walk(ybeam, H);
	if (r1 < 0 || r2 < 0)
	{
		cout << -1 << endl;
		return 0;
	}
	cout << r1 + r2 << endl;
	return 0;
}

Submission Info

Submission Time
Task C - ビーム
User platypus
Language C++14 (GCC 5.4.1)
Score 30
Code Size 1932 Byte
Status TLE
Exec Time 2103 ms
Memory 6196 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 0 / 70
Status
AC × 3
AC × 33
AC × 50
TLE × 13
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask1_30.txt
Subtask2 sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask1_30.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask2_26.txt, subtask2_27.txt, subtask2_28.txt, subtask2_29.txt, subtask2_30.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask1_01.txt AC 1 ms 256 KB
subtask1_02.txt AC 1 ms 256 KB
subtask1_03.txt AC 1 ms 256 KB
subtask1_04.txt AC 1 ms 256 KB
subtask1_05.txt AC 1 ms 256 KB
subtask1_06.txt AC 1 ms 256 KB
subtask1_07.txt AC 1 ms 256 KB
subtask1_08.txt AC 1 ms 256 KB
subtask1_09.txt AC 1 ms 256 KB
subtask1_10.txt AC 1 ms 256 KB
subtask1_11.txt AC 1 ms 256 KB
subtask1_12.txt AC 1 ms 256 KB
subtask1_13.txt AC 1 ms 256 KB
subtask1_14.txt AC 1 ms 256 KB
subtask1_15.txt AC 1 ms 256 KB
subtask1_16.txt AC 1 ms 256 KB
subtask1_17.txt AC 1 ms 256 KB
subtask1_18.txt AC 1 ms 256 KB
subtask1_19.txt AC 1 ms 256 KB
subtask1_20.txt AC 1 ms 256 KB
subtask1_21.txt AC 1 ms 256 KB
subtask1_22.txt AC 1 ms 256 KB
subtask1_23.txt AC 1 ms 256 KB
subtask1_24.txt AC 1 ms 256 KB
subtask1_25.txt AC 1 ms 256 KB
subtask1_26.txt AC 1 ms 256 KB
subtask1_27.txt AC 1 ms 256 KB
subtask1_28.txt AC 1 ms 256 KB
subtask1_29.txt AC 1 ms 256 KB
subtask1_30.txt AC 1 ms 256 KB
subtask2_01.txt AC 78 ms 2764 KB
subtask2_02.txt AC 78 ms 2684 KB
subtask2_03.txt AC 70 ms 2776 KB
subtask2_04.txt TLE 2103 ms 4004 KB
subtask2_05.txt TLE 2103 ms 2792 KB
subtask2_06.txt AC 83 ms 3628 KB
subtask2_07.txt AC 85 ms 2728 KB
subtask2_08.txt TLE 2103 ms 2776 KB
subtask2_09.txt TLE 2103 ms 2860 KB
subtask2_10.txt TLE 2103 ms 2868 KB
subtask2_11.txt AC 1069 ms 4724 KB
subtask2_12.txt AC 467 ms 2668 KB
subtask2_13.txt AC 346 ms 2668 KB
subtask2_14.txt AC 160 ms 2696 KB
subtask2_15.txt AC 2 ms 384 KB
subtask2_16.txt AC 1 ms 256 KB
subtask2_17.txt AC 990 ms 2672 KB
subtask2_18.txt AC 77 ms 3628 KB
subtask2_19.txt AC 83 ms 3444 KB
subtask2_20.txt AC 1832 ms 2664 KB
subtask2_21.txt AC 1391 ms 2668 KB
subtask2_22.txt TLE 2103 ms 6196 KB
subtask2_23.txt AC 70 ms 2672 KB
subtask2_24.txt TLE 2103 ms 3504 KB
subtask2_25.txt TLE 2023 ms 2688 KB
subtask2_26.txt TLE 2033 ms 2776 KB
subtask2_27.txt TLE 2103 ms 2940 KB
subtask2_28.txt TLE 2103 ms 4468 KB
subtask2_29.txt TLE 2103 ms 2668 KB
subtask2_30.txt TLE 2103 ms 2668 KB