提出 #41771352
ソースコード 拡げる
#include <bits/stdc++.h>
#define st first
#define nd second
#define db double
#define re register
#define pb push_back
#define mk make_pair
#define int long long
#define ldb long double
#define pii pair<int, int>
#define ull unsigned long long
#define mst(a, b) memset(a, b, sizeof(a))
#define i128 __int128
using namespace std;
const int N = 3e5 + 10, INF = 1e18;
inline int read()
{
int s = 0, w = 1;
char ch = getchar();
while(ch < '0' || ch > '9') { if(ch == '-') w *= -1; ch = getchar(); }
while(ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar();
return s * w;
}
struct Skill{ i128 t, d, p; }sk[N], ar[N];
int n, m, h;
inline i128 f(i128 a, i128 b, i128 c) { return (a + b) * c / 2; }
inline bool check(i128 T)
{
i128 u = 1, v = 2, tim = 0, sum = 0;
while(tim < T){
i128 mx = T - ar[u].t + 1; //最大的能打满伤害的时刻
if(tim < mx) sum += (mx - tim) * ar[u].p, tim = mx;
else{
if(v > m) { sum += f(ar[u].d * (T - tim), ar[u].d, T - tim); break; }
mx = T - ar[v].t + 1;
if(ar[u].d * (T - mx + 1) >= ar[v].p) sum += f(ar[u].d * (T - tim), ar[u].d * (T - mx + 1), mx - tim), v++;
else{
int l = tim + 1, r = mx, res;
while(l <= r){
int mid = (l + r) >> 1;
if(ar[u].d * (T - mid + 1) < ar[v].p) res = mid, r = mid - 1;
else l = mid + 1;
}
int tem = res - 1;
sum += f(ar[u].d * (T - tim), ar[u].d * (T - tem + 1), tem - tim);
tim = tem, u = v, v = u + 1;
}
}
if(sum >= h) return true;
}
return sum >= h;
}
inline bool cmp(Skill a, Skill b) { return a.p == b.p ? a.t < b.t : a.p > b.p; }
signed main()
{
n = read(), h = read();
for(re int i = 1; i <= n; i++) sk[i].t = read(), sk[i].d = read();
for(re int i = 1; i <= n; i++) sk[i].p = sk[i].t * sk[i].d;
sort(sk + 1, sk + n + 1, cmp);
for(re int i = 1; i <= n; i++) ar[++m] = sk[i];
int l = 1, r = INF, ans = INF;
while(l <= r){
int mid = (l + r) >> 1;
if(check(mid)) ans = mid, r = mid - 1;
else l = mid + 1;
}
printf("%lld\n", ans);
return 0;
}
提出情報
コンパイルエラー
./Main.cpp: In function ‘int main()’:
./Main.cpp:57:14: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister]
57 | for(re int i = 1; i <= n; i++) sk[i].t = read(), sk[i].d = read();
| ^
./Main.cpp:58:14: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister]
58 | for(re int i = 1; i <= n; i++) sk[i].p = sk[i].t * sk[i].d;
| ^
./Main.cpp:60:14: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister]
60 | for(re int i = 1; i <= n; i++) ar[++m] = sk[i];
| ^
./Main.cpp:44:13: warning: ‘res’ may be used uninitialized in this function [-Wmaybe-uninitialized]
44 | int tem = res - 1;
| ^~~
./Main.cpp:38:34: note: ‘res’ was declared here
38 | int l = tim + 1, r = mx, res;
| ^~~
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
0 / 525 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_00.txt, 00_sample_01.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 01_rnd_06.txt, 01_rnd_07.txt, 01_rnd_08.txt, 01_rnd_09.txt, 02_minmax_00.txt, 02_minmax_01.txt, 02_minmax_02.txt, 02_minmax_03.txt, 02_minmax_04.txt, 02_minmax_05.txt, 02_minmax_06.txt, 02_minmax_07.txt, 03_special_00.txt, 03_special_01.txt, 03_special_02.txt, 03_special_03.txt, 03_special_04.txt, 03_special_05.txt, 03_special_06.txt, 03_special_07.txt, 03_special_08.txt, 03_special_09.txt, 03_special_10.txt, 03_special_11.txt, 03_special_12.txt, 03_special_13.txt, 03_special_14.txt, 03_special_15.txt, 03_special_16.txt, 03_special_17.txt, 03_special_18.txt, 03_special_19.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_00.txt |
AC |
5 ms |
3436 KiB |
| 00_sample_01.txt |
WA |
2 ms |
3564 KiB |
| 01_rnd_00.txt |
WA |
98 ms |
31560 KiB |
| 01_rnd_01.txt |
WA |
99 ms |
31768 KiB |
| 01_rnd_02.txt |
WA |
95 ms |
31684 KiB |
| 01_rnd_03.txt |
WA |
98 ms |
31696 KiB |
| 01_rnd_04.txt |
WA |
99 ms |
31852 KiB |
| 01_rnd_05.txt |
AC |
73 ms |
31748 KiB |
| 01_rnd_06.txt |
AC |
72 ms |
31748 KiB |
| 01_rnd_07.txt |
AC |
72 ms |
31700 KiB |
| 01_rnd_08.txt |
AC |
71 ms |
31668 KiB |
| 01_rnd_09.txt |
AC |
71 ms |
31744 KiB |
| 02_minmax_00.txt |
AC |
62 ms |
31856 KiB |
| 02_minmax_01.txt |
AC |
70 ms |
31684 KiB |
| 02_minmax_02.txt |
WA |
137 ms |
31688 KiB |
| 02_minmax_03.txt |
WA |
143 ms |
31748 KiB |
| 02_minmax_04.txt |
AC |
61 ms |
31852 KiB |
| 02_minmax_05.txt |
AC |
70 ms |
31628 KiB |
| 02_minmax_06.txt |
AC |
181 ms |
31676 KiB |
| 02_minmax_07.txt |
WA |
142 ms |
31852 KiB |
| 03_special_00.txt |
WA |
136 ms |
31748 KiB |
| 03_special_01.txt |
WA |
184 ms |
31856 KiB |
| 03_special_02.txt |
WA |
148 ms |
31680 KiB |
| 03_special_03.txt |
WA |
159 ms |
31784 KiB |
| 03_special_04.txt |
WA |
160 ms |
31748 KiB |
| 03_special_05.txt |
WA |
149 ms |
31744 KiB |
| 03_special_06.txt |
WA |
177 ms |
31684 KiB |
| 03_special_07.txt |
WA |
166 ms |
31672 KiB |
| 03_special_08.txt |
WA |
190 ms |
31748 KiB |
| 03_special_09.txt |
WA |
175 ms |
31680 KiB |
| 03_special_10.txt |
WA |
133 ms |
31668 KiB |
| 03_special_11.txt |
WA |
146 ms |
31788 KiB |
| 03_special_12.txt |
WA |
96 ms |
31620 KiB |
| 03_special_13.txt |
WA |
95 ms |
31624 KiB |
| 03_special_14.txt |
WA |
97 ms |
31744 KiB |
| 03_special_15.txt |
WA |
95 ms |
31560 KiB |
| 03_special_16.txt |
WA |
94 ms |
31768 KiB |
| 03_special_17.txt |
WA |
95 ms |
31856 KiB |
| 03_special_18.txt |
WA |
96 ms |
31684 KiB |
| 03_special_19.txt |
WA |
96 ms |
31624 KiB |