提出 #577328


ソースコード 拡げる

#include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<cmath>
#include<cstdlib>
#include<string>
#include<cstring>
using namespace std;
typedef long long i64;

struct dat
{
	int left, right; // [,)
	dat() {}
	dat(int l, int r) : left(l), right(r) {}
};

inline dat operator+(const dat& a, const dat& b)
{
	if (a.left == -1) return b;
	if (b.left == -1) return a;
	if (a.left == -2 || b.left == -2) return dat(-2, -2);
	if (a.right == b.left) return dat(a.left, b.right);
	return dat(-2, -2);
}

inline bool operator==(const dat& a, const dat& b)
{
	return a.left == b.left && a.right == b.right;
}

struct segtree
{
	static const int DEPTH = 18;
	static const int N = 1 << DEPTH;

	dat d[2 * N];

	void init()
	{
		for (int i = 0; i < 2 * N; ++i) d[i] = dat(-1, -1);
	}

	void update(int p, dat v)
	{
		p += N;
		d[p] = v;
		p >>= 1;
		while (p) {
			d[p] = d[p * 2] + d[p * 2 + 1];
			p >>= 1;
		}
	}

	dat query(int L, int R)
	{
		L += N; R += N;
		dat lp(-1, -1), rp(-1, -1);

		while (L < R) {
			if (L & 1) lp = lp + d[L++];
			if (R & 1) rp = d[--R] + rp;
			L >>= 1; R >>= 1;
		}
		return lp + rp;
	}
};
int N, K, T;

segtree seg;
vector<pair<int, int> > eves[202020]; // loc, op

int main()
{
	scanf("%d%d%d", &N, &K, &T);
	seg.init();

	for (int i = 0; i < T; ++i) {
		int l, r, x;
		scanf("%d%d%d", &l, &r, &x);

		eves[--l].push_back(make_pair(i, x));
		eves[r].push_back(make_pair(i, ~x));
	}

	int ret = 0;

	for (int i = 0; i < N; ++i) {
		for (auto a : eves[i]) {
			if (a.second < 0) {
				seg.update(a.first, dat(-1, -1));
			}
			else {
				seg.update(a.first, dat(a.second - 1, a.second));
			}
		}

		auto a = seg.query(0, T);
	//	printf("%d: %d %d\n", i, a.left, a.right);
		if (seg.query(0, T) == dat(0, K)) ++ret;
	}

	printf("%d\n", ret);

	return 0;
}

提出情報

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

コンパイルエラー

./Main.cpp: In function ‘int main()’:
./Main.cpp:79:29: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d%d", &N, &K, &T);
                             ^
./Main.cpp:84:30: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d%d", &l, &r, &x);
                              ^

ジャッジ結果

セット名 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 40 ms 9504 KiB
00_sample_01 AC 40 ms 9508 KiB
00_sample_02 AC 40 ms 9512 KiB
10_random_small_000 AC 40 ms 9640 KiB
10_random_small_001 AC 40 ms 9636 KiB
10_random_small_002 AC 39 ms 9636 KiB
10_random_small_003 AC 43 ms 9640 KiB
10_random_small_004 AC 40 ms 9648 KiB
10_random_small_005 AC 40 ms 9632 KiB
10_random_small_006 AC 40 ms 9640 KiB
10_random_small_007 AC 40 ms 9636 KiB
10_random_small_008 AC 42 ms 9680 KiB
10_random_small_009 AC 40 ms 9632 KiB
20_random_large_000 AC 297 ms 16416 KiB
20_random_large_001 AC 299 ms 16424 KiB
20_random_large_002 AC 298 ms 16420 KiB
20_random_large_003 AC 294 ms 16416 KiB
20_random_large_004 AC 296 ms 16412 KiB
20_random_large_005 AC 298 ms 16420 KiB
20_random_large_006 AC 298 ms 16416 KiB
20_random_large_007 AC 295 ms 16412 KiB
20_random_large_008 AC 291 ms 16412 KiB
20_random_large_009 AC 292 ms 16408 KiB
30_update_widely_000 AC 171 ms 13844 KiB
30_update_widely_001 AC 175 ms 14196 KiB
30_update_widely_002 AC 184 ms 14060 KiB
30_update_widely_003 AC 201 ms 14092 KiB
40_comb_pattern_000 AC 169 ms 12936 KiB
40_comb_pattern_001 AC 215 ms 17036 KiB
41_random_split_000 AC 188 ms 13444 KiB
41_random_split_001 AC 239 ms 13972 KiB
90_challenge_00 AC 224 ms 12932 KiB
90_challenge_01 AC 207 ms 12792 KiB