提出 #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 |
| 結果 |
|
| セット名 |
テストケース |
| 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 |