Submission #00107


ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include <bits/stdc++.h>
using namespace std;
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define ll long long
#define next_per(v) next_permutation(v.begin(), v.end())
#define prev_per(v) prev_permutation(v.begin(), v.end())
#define fixed(v) fixed << setprecision(v)
#define total(n) ((n) * ((n) + 1) / 2)
#define combi(n) ((n) * ((n)-1) / 2) // n個の数の組み合わせ数
#define lcm(a, b) ((a) * (b) / __gcd(a, b))
// binery_search(all(v),key) = keyがあるかないかをboolで返す
// lower_bound(all(v),key) = key以上のイテレーターを返す(一番左)
// upper_bound(all(v),key) = keyより大きい要素のイテレーターを返す
// 最小値=max_element(v.begin(),v.end());
// 最大値=min_element(v.begin(),v.end());
template <class x>
x rng_total(x l, x r)
{ // l ~ rまでの数の総和
return ((l + r) * (r - l + 1) / 2);
}
template <class x>
x rng_combi(x l, x r)
{ //「l個の物からr個取った組み合わせ数」
x ans = 1;
l++;
for (x i = 1; i <= r; i++)
{
x sub = l - i;
ans *= sub;
ans /= i;
}
return (ans);
}
template <class x>
x dig_sum(x num)
{ // 各桁の総和
x ans = 0;
while (num > 0)
{
ans += num % 10;
num /= 10;
}
return (ans);
}
// [struct]--------------------------------------
// <UnionFind>
struct UnionFind {
// 親の要素とサイズを管理する変数
int group_cnt;
vector<int> parent, size;
// 変数の初期化
UnionFind(int n) {
parent.resize(n, -1);
size.resize(n, 1);
group_cnt = n;
}
// x の根を求める
int root(int x) {
// x が根のとき
if(parent[x] == -1) return x;
// 経路圧縮
return parent[x] = root(parent[x]);
}
// x と y の根が同じか
bool isSame(int x, int y) {
return root(x) == root(y);
}
// x と y のグループを併合する
bool unite(int x, int y) {
// x と y の根を取得
int rootX = root(x);
int rootY = root(y);
// x と y が同じグループのときは何もしない
if (rootX == rootY) return(false);
// union by size( y のサイズが小さくなるように調整 )
if (size[rootX] < size[rootY]) swap(rootX, rootY);
// y の親を x にする
parent[rootY] = rootX;
// 連結成分の個数を一つ減らす
group_cnt--;
// x のサイズに y のサイズを足す
size[rootX] += size[rootY];
return(true);
}
};
//-----------------------------------------------------
long double f(long double x) {
return(6.0 * x - 10.0);
}
long double g(long double x) {
return(x * sqrt(x) - 2.0 * x);
}
long double h(long double x) {
return(3.0 * x - (x - 1.0) * (x - 1.0));
}
int main()
{
cin.tie(nullptr);
ios_base::sync_with_stdio(false);
//-----------------------------------------------------
int n;
cin >> n;
vector<ll> imos(200007, 0);
for (int i = 0; i < n; i++) {
ll s, t, p;
cin >> s >> t >> p;
imos[s] += p;
imos[t + 1] -= p;
}
for (int i = 1; i < 200002; i++) {
imos[i] += imos[i - 1];
}
ll ans = 0;
for (int i = 0; i < 200002; i++) {
ans = max(ans, imos[i]);
}
cout << ans << endl;
return(0);
}
// sishou

ステータス

項目 データ
問題 0008 - subscription(サブスク)
ユーザー名 ei2134
投稿日時 2023-07-18 17:23:20
言語 C++17
状態 Accepted
得点 100
ソースコード長 3612 Byte
最大実行時間 56 ms
最大メモリ使用量 2188 KB

セット

セット 得点 Cases
1 ALL 100 / 100 *

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
in-1.txt AC 56 ms 2140 KB
1
in-2.txt AC 46 ms 2188 KB
1
in-3.txt AC 51 ms 2112 KB
1
in-4.txt AC 46 ms 2164 KB
1
in-5.txt AC 20 ms 2092 KB
1
in-6.txt AC 53 ms 2148 KB
1
in-sample1.txt AC 16 ms 2068 KB
1
in-sample2.txt AC 21 ms 1992 KB
1
in-sample3.txt AC 20 ms 2052 KB
1