Submission #949728


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
#define FOR(i,k,n) for(ll i = (ll)(k); i < (ll)(n); i++)
#define REP(i,n) FOR(i,0,n)
#define ALL(a) a.begin(), a.end()
#define MS(m,v) memset(m,v,sizeof(m))
typedef long long ll;
typedef long double ld;
typedef vector<ll> vi;
typedef vector<string> vs;
typedef pair<ll, ll> pii;
typedef pair<ld, ld> pdd;
const ll MOD = 1000000007;
const ll INF = MOD + 1;
const ld EPS = 1e-12;
template<class T> T &chmin(T &a, const T &b) { return a = min(a, b); }
template<class T> T &chmax(T &a, const T &b) { return a = max(a, b); }

/*--------------------template--------------------*/

struct Data
{
	pdd num;
	Data() :num(1, 0) {};
	Data(pdd n) { num = n; };
};

struct SegmentTree
{
	ll n; vector<Data> data;
	SegmentTree(ll N)
	{
		n = 1;
		while (n < N) n *= 2;
		data.resize(2 * n);
	}
private:
	Data sub(ll left, ll right, ll node, ll nleft, ll nright)
	{
		if (nright <= left || right <= nleft) return Data();
		if (left <= nleft && nright <= right) return data[node];
		Data vl = sub(left, right, node * 2 + 1, nleft, (nleft + nright) / 2);
		Data vr = sub(left, right, node * 2 + 2, (nleft + nright) / 2, nright);
		return pdd(vl.num.first * vr.num.first, vl.num.second * vr.num.first + vr.num.second);
	}

public:
	void update(ll pos, Data value)
	{
		pos += n - 1;
		data[pos] = value;
		while (pos > 0)
		{
			pos = (pos - 1) / 2;
			ld a = data[pos * 2 + 1].num.first, b = data[pos * 2 + 1].num.second;
			ld c = data[pos * 2 + 2].num.first, d = data[pos * 2 + 2].num.second;
			data[pos] = pdd(a * c, b * c + d);
		}
	}
	ld get()
	{
		return data[0].num.first + data[0].num.second;
	}
};

typedef pair<ll, pdd> query;

int main()
{
	cin.sync_with_stdio(false); cout << fixed << setprecision(10);
	ll n, m;
	cin >> n >> m;
	vector<query> q;
	set<ld> st;

	REP(i, m)
	{
		ll a; ld b, c;
		cin >> a >> b >> c;
		a--;
		st.insert(a);
		q.emplace_back(a, pdd(b, c));
	}

	map<ld, ll> dict;
	ll sz = 0;
	for (auto i : st) dict[i] = sz++;

	SegmentTree seg(sz);
	ld ansmax = 1, ansmin = 1;
	REP(i, m)
	{
		ll id = dict[q[i].first];
		pdd a = q[i].second;
		seg.update(id, a);
		ld tmp = seg.get();
		chmax(ansmax, tmp);
		chmin(ansmin, tmp);
	}
	cout << ansmin << endl;
	cout << ansmax << endl;
	return 0;
}

Submission Info

Submission Time
Task D - タコヤキオイシクナール
User amano
Language C++11 (GCC 4.8.1)
Score 100
Code Size 2351 Byte
Status AC
Exec Time 145 ms
Memory 14288 KB

Judge Result

Set Name small large
Score / Max Score 50 / 50 50 / 50
Status
AC × 42
AC × 78
Set Name Test Cases
small small/small_00_sample_01.txt, small/small_00_sample_02.txt, small/small_00_sample_03.txt, small/small_00_sample_04.txt, small/small_01_min.txt, small/small_01_nom.txt, small/small_01_rand_00.txt, small/small_01_rand_01.txt, small/small_01_rand_02.txt, small/small_01_rand_03.txt, small/small_01_rand_04.txt, small/small_01_rand_05.txt, small/small_01_rand_06.txt, small/small_01_rand_07.txt, small/small_01_rand_08.txt, small/small_01_rand_09.txt, small/small_02_maxrand_00.txt, small/small_02_maxrand_01.txt, small/small_02_maxrand_02.txt, small/small_02_maxrand_03.txt, small/small_02_maxrand_04.txt, small/small_02_maxrand_05.txt, small/small_02_maxrand_06.txt, small/small_02_maxrand_07.txt, small/small_02_maxrand_08.txt, small/small_02_maxrand_09.txt, small/small_03_smalln_00.txt, small/small_03_smalln_01.txt, small/small_03_smalln_02.txt, small/small_03_smalln_03.txt, small/small_03_smalln_04.txt, small/small_03_smalln_05.txt, small/small_03_smalln_06.txt, small/small_03_smalln_07.txt, small/small_03_smalln_08.txt, small/small_03_smalln_09.txt, small/small_04_allplus_00.txt, small/small_04_allplus_01.txt, small/small_04_allplus_02.txt, small/small_05_allminus_00.txt, small/small_05_allminus_01.txt, small/small_05_allminus_02.txt
large small/small_00_sample_01.txt, small/small_00_sample_02.txt, small/small_00_sample_03.txt, small/small_00_sample_04.txt, small/small_01_min.txt, small/small_01_nom.txt, small/small_01_rand_00.txt, small/small_01_rand_01.txt, small/small_01_rand_02.txt, small/small_01_rand_03.txt, small/small_01_rand_04.txt, small/small_01_rand_05.txt, small/small_01_rand_06.txt, small/small_01_rand_07.txt, small/small_01_rand_08.txt, small/small_01_rand_09.txt, small/small_02_maxrand_00.txt, small/small_02_maxrand_01.txt, small/small_02_maxrand_02.txt, small/small_02_maxrand_03.txt, small/small_02_maxrand_04.txt, small/small_02_maxrand_05.txt, small/small_02_maxrand_06.txt, small/small_02_maxrand_07.txt, small/small_02_maxrand_08.txt, small/small_02_maxrand_09.txt, small/small_03_smalln_00.txt, small/small_03_smalln_01.txt, small/small_03_smalln_02.txt, small/small_03_smalln_03.txt, small/small_03_smalln_04.txt, small/small_03_smalln_05.txt, small/small_03_smalln_06.txt, small/small_03_smalln_07.txt, small/small_03_smalln_08.txt, small/small_03_smalln_09.txt, small/small_04_allplus_00.txt, small/small_04_allplus_01.txt, small/small_04_allplus_02.txt, small/small_05_allminus_00.txt, small/small_05_allminus_01.txt, small/small_05_allminus_02.txt, large/large_01_rand_00.txt, large/large_01_rand_01.txt, large/large_01_rand_02.txt, large/large_01_rand_03.txt, large/large_01_rand_04.txt, large/large_01_rand_05.txt, large/large_01_rand_06.txt, large/large_01_rand_07.txt, large/large_01_rand_08.txt, large/large_01_rand_09.txt, large/large_02_maxrand_00.txt, large/large_02_maxrand_01.txt, large/large_02_maxrand_02.txt, large/large_02_maxrand_03.txt, large/large_02_maxrand_04.txt, large/large_02_maxrand_05.txt, large/large_02_maxrand_06.txt, large/large_02_maxrand_07.txt, large/large_02_maxrand_08.txt, large/large_02_maxrand_09.txt, large/large_03_smalln_00.txt, large/large_03_smalln_01.txt, large/large_03_smalln_02.txt, large/large_03_smalln_03.txt, large/large_03_smalln_04.txt, large/large_03_smalln_05.txt, large/large_03_smalln_06.txt, large/large_03_smalln_07.txt, large/large_03_smalln_08.txt, large/large_03_smalln_09.txt, large/large_04_allplus_00.txt, large/large_04_allplus_01.txt, large/large_04_allplus_02.txt, large/large_05_allminus_00.txt, large/large_05_allminus_01.txt, large/large_05_allminus_02.txt
Case Name Status Exec Time Memory
large/large_01_rand_00.txt AC 66 ms 4728 KB
large/large_01_rand_01.txt AC 46 ms 4100 KB
large/large_01_rand_02.txt AC 133 ms 13688 KB
large/large_01_rand_03.txt AC 65 ms 6664 KB
large/large_01_rand_04.txt AC 93 ms 8836 KB
large/large_01_rand_05.txt AC 44 ms 3976 KB
large/large_01_rand_06.txt AC 67 ms 6820 KB
large/large_01_rand_07.txt AC 89 ms 8616 KB
large/large_01_rand_08.txt AC 120 ms 12672 KB
large/large_01_rand_09.txt AC 66 ms 6660 KB
large/large_02_maxrand_00.txt AC 145 ms 14212 KB
large/large_02_maxrand_01.txt AC 144 ms 14208 KB
large/large_02_maxrand_02.txt AC 141 ms 14288 KB
large/large_02_maxrand_03.txt AC 140 ms 14244 KB
large/large_02_maxrand_04.txt AC 137 ms 14208 KB
large/large_02_maxrand_05.txt AC 139 ms 14200 KB
large/large_02_maxrand_06.txt AC 143 ms 14208 KB
large/large_02_maxrand_07.txt AC 139 ms 14208 KB
large/large_02_maxrand_08.txt AC 139 ms 14204 KB
large/large_02_maxrand_09.txt AC 143 ms 14204 KB
large/large_03_smalln_00.txt AC 114 ms 8276 KB
large/large_03_smalln_01.txt AC 120 ms 9600 KB
large/large_03_smalln_02.txt AC 83 ms 4076 KB
large/large_03_smalln_03.txt AC 106 ms 6140 KB
large/large_03_smalln_04.txt AC 77 ms 4036 KB
large/large_03_smalln_05.txt AC 98 ms 5496 KB
large/large_03_smalln_06.txt AC 110 ms 7500 KB
large/large_03_smalln_07.txt AC 113 ms 8344 KB
large/large_03_smalln_08.txt AC 80 ms 4064 KB
large/large_03_smalln_09.txt AC 112 ms 7672 KB
large/large_04_allplus_00.txt AC 141 ms 14208 KB
large/large_04_allplus_01.txt AC 138 ms 14208 KB
large/large_04_allplus_02.txt AC 135 ms 14212 KB
large/large_05_allminus_00.txt AC 141 ms 14204 KB
large/large_05_allminus_01.txt AC 139 ms 14212 KB
large/large_05_allminus_02.txt AC 138 ms 14196 KB
small/small_00_sample_01.txt AC 19 ms 928 KB
small/small_00_sample_02.txt AC 18 ms 796 KB
small/small_00_sample_03.txt AC 19 ms 796 KB
small/small_00_sample_04.txt AC 20 ms 928 KB
small/small_01_min.txt AC 17 ms 800 KB
small/small_01_nom.txt AC 19 ms 792 KB
small/small_01_rand_00.txt AC 21 ms 1052 KB
small/small_01_rand_01.txt AC 20 ms 924 KB
small/small_01_rand_02.txt AC 19 ms 928 KB
small/small_01_rand_03.txt AC 20 ms 1040 KB
small/small_01_rand_04.txt AC 20 ms 928 KB
small/small_01_rand_05.txt AC 18 ms 928 KB
small/small_01_rand_06.txt AC 19 ms 916 KB
small/small_01_rand_07.txt AC 20 ms 928 KB
small/small_01_rand_08.txt AC 20 ms 796 KB
small/small_01_rand_09.txt AC 20 ms 924 KB
small/small_02_maxrand_00.txt AC 20 ms 1056 KB
small/small_02_maxrand_01.txt AC 21 ms 1180 KB
small/small_02_maxrand_02.txt AC 19 ms 1052 KB
small/small_02_maxrand_03.txt AC 20 ms 1168 KB
small/small_02_maxrand_04.txt AC 19 ms 1056 KB
small/small_02_maxrand_05.txt AC 20 ms 1052 KB
small/small_02_maxrand_06.txt AC 19 ms 1056 KB
small/small_02_maxrand_07.txt AC 21 ms 1180 KB
small/small_02_maxrand_08.txt AC 22 ms 1008 KB
small/small_02_maxrand_09.txt AC 19 ms 1056 KB
small/small_03_smalln_00.txt AC 21 ms 1052 KB
small/small_03_smalln_01.txt AC 21 ms 928 KB
small/small_03_smalln_02.txt AC 20 ms 924 KB
small/small_03_smalln_03.txt AC 20 ms 928 KB
small/small_03_smalln_04.txt AC 21 ms 1048 KB
small/small_03_smalln_05.txt AC 21 ms 928 KB
small/small_03_smalln_06.txt AC 20 ms 928 KB
small/small_03_smalln_07.txt AC 21 ms 928 KB
small/small_03_smalln_08.txt AC 21 ms 932 KB
small/small_03_smalln_09.txt AC 20 ms 924 KB
small/small_04_allplus_00.txt AC 25 ms 1056 KB
small/small_04_allplus_01.txt AC 21 ms 1056 KB
small/small_04_allplus_02.txt AC 20 ms 1044 KB
small/small_05_allminus_00.txt AC 21 ms 1052 KB
small/small_05_allminus_01.txt AC 19 ms 1056 KB
small/small_05_allminus_02.txt AC 20 ms 1056 KB