提出 #577458


ソースコード 拡げる

#include<bits/stdc++.h>
using namespace std;
#define FZ(n) memset((n),0,sizeof(n))
#define FMO(n) memset((n),-1,sizeof(n))
#define F first
#define S second
#define PB push_back
#define ALL(x) begin(x),end(x)
#define SZ(x) ((int)(x).size())
#define IOS ios_base::sync_with_stdio(0); cin.tie(0)
template<typename A, typename B>
ostream& operator <<(ostream &s, const pair<A,B> &p) {
  return s<<"("<<p.first<<","<<p.second<<")";
}
template<typename T>
ostream& operator <<(ostream &s, const vector<T> &c) {
  s<<"[ ";
  for (auto it : c) s << it << " ";
  s<<"]";
  return s;
}
// Let's Fight!

typedef pair<int,int> pii;

const int MX = 200005;

int N, K, Q, bye[MX];
set<pii> st;
vector<pii> seg;

int main() {
    IOS;
	while (cin >> N >> K) {
		cin >> Q;
		FZ(bye);
		seg.clear();
		st.clear();
		st.insert({0, 0});
		st.insert({N, 0});
		while (Q--) {
			int l, r, c;
			cin >> l >> r >> c;
			l--; r--;

			auto iter = st.lower_bound({l+1, -1});
			iter--;
			vector<set<pii>::iterator> vec;
			int fstL = iter->F;
			int fstC = iter->S;
			int lstC = 0;;
			while (iter->F <= r) {
				vec.PB(iter);
				auto nxt = iter;
				nxt++;

				int nl = max(iter->F, l);
				int nr = min(r, nxt->F - 1);

				if (iter->S != c-1) {
					seg.PB({nl, nr});
				}
				lstC = iter->S;;
				iter = nxt;
			}
			for (auto it : vec) {
				st.erase(it);
			}
			st.insert({l, c});
			if (fstL < l) {
				st.insert({fstL, fstC});
			}
			iter = st.lower_bound({l, c+1});
			if (iter->F > r+1) {
				st.insert({r+1, lstC});
			}
			/*
			cout << "==== after oper ====" << endl;
			for (auto it : st) cout << it << endl;
			*/
		}
		/*
		for (auto it : seg) {
			cout << "bye " << it << endl;
		}
		*/
		vector<pii> vec;
		for (auto it : st) {
			vec.PB(it);
		}
		for (int i=0; i<SZ(vec)-1; i++) {
			if (vec[i].S != K) {
				seg.PB({vec[i].F, vec[i+1].F-1});
			}
		}
		for (auto it : seg) {
			bye[it.F]++;
			bye[it.S+1]--;
		}
		int ans = 0;
		for (int i=0; i<N; i++) {
			if (i) bye[i] += bye[i-1];
			if (!bye[i]) ans++;
		}
		cout << ans << endl;
	}

    return 0;
}

提出情報

提出日時
問題 H - Donut Decoration
ユーザ bcw0x1bd2
言語 C++11 (GCC 4.8.1)
得点 100
コード長 2170 Byte
結果 AC
実行時間 326 ms
メモリ 11020 KiB

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 33
セット名 テストケース
All 00_sample_00, 00_sample_01, 00_sample_02, 10_random_small_000, 10_random_small_001, 10_random_small_002, 10_random_small_003, 10_random_small_004, 10_random_small_005, 10_random_small_006, 10_random_small_007, 10_random_small_008, 10_random_small_009, 20_random_large_000, 20_random_large_001, 20_random_large_002, 20_random_large_003, 20_random_large_004, 20_random_large_005, 20_random_large_006, 20_random_large_007, 20_random_large_008, 20_random_large_009, 30_update_widely_000, 30_update_widely_001, 30_update_widely_002, 30_update_widely_003, 40_comb_pattern_000, 40_comb_pattern_001, 41_random_split_000, 41_random_split_001, 90_challenge_00, 90_challenge_01
ケース名 結果 実行時間 メモリ
00_sample_00 AC 25 ms 1564 KiB
00_sample_01 AC 25 ms 1568 KiB
00_sample_02 AC 25 ms 1700 KiB
10_random_small_000 AC 25 ms 1696 KiB
10_random_small_001 AC 26 ms 1692 KiB
10_random_small_002 AC 24 ms 1688 KiB
10_random_small_003 AC 28 ms 1568 KiB
10_random_small_004 AC 26 ms 1568 KiB
10_random_small_005 AC 24 ms 1692 KiB
10_random_small_006 AC 25 ms 1700 KiB
10_random_small_007 AC 25 ms 1692 KiB
10_random_small_008 AC 24 ms 1700 KiB
10_random_small_009 AC 25 ms 1568 KiB
20_random_large_000 AC 321 ms 5776 KiB
20_random_large_001 AC 326 ms 5784 KiB
20_random_large_002 AC 323 ms 5780 KiB
20_random_large_003 AC 323 ms 5784 KiB
20_random_large_004 AC 324 ms 5780 KiB
20_random_large_005 AC 325 ms 5776 KiB
20_random_large_006 AC 317 ms 5776 KiB
20_random_large_007 AC 319 ms 5776 KiB
20_random_large_008 AC 326 ms 5780 KiB
20_random_large_009 AC 322 ms 5768 KiB
30_update_widely_000 AC 163 ms 2708 KiB
30_update_widely_001 AC 160 ms 2712 KiB
30_update_widely_002 AC 166 ms 2712 KiB
30_update_widely_003 AC 168 ms 2716 KiB
40_comb_pattern_000 AC 138 ms 1564 KiB
40_comb_pattern_001 AC 271 ms 11020 KiB
41_random_split_000 AC 166 ms 1688 KiB
41_random_split_001 AC 178 ms 1560 KiB
90_challenge_00 AC 146 ms 1572 KiB
90_challenge_01 AC 194 ms 3740 KiB