提出 #41815780
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
#define de(x) cout<<#x<<"="<<x<<endl
using ll = long long;
const int N = 3e5+5;
ll n,h;
ll t[N],d[N];
vector<ll> tt;
vector<ll> g[N];
map<ll,int> mp;
bool check(ll mid){
vector<pair<ll,ll> > vc;
for (int i=0; i<n; i++){
vc.push_back({d[i]*t[i],t[i]});
}
sort(vc.rbegin(),vc.rend());
ll lst=mid;
ll dam=0;
ll mx=0;
int top=0;
for (int i=0; i<tt.size(); i++){
if (tt[i]>mid){
for (auto u : g[i]){
mx=max(mx,d[u]);
}
while (top<vc.size() && vc[top].second>=tt[i]){
top++;
}
continue;
}
ll cur=(top==vc.size()?0:vc[top].first);
if (cur!=0 && 2000000000000000000ll/cur<(lst-tt[i]+1)){
return 1;
}
if (mx!=0 && 4000000000000000000ll/mx<(lst+tt[i])*(lst-tt[i]+1)){
return 1;
}
ll a1=cur*(lst-tt[i]+1);
ll a2=mx*(lst+tt[i])*(lst-tt[i]+1)/2;
dam+=max(a1,a2);
dam=min(dam,2000000000000000000ll);
lst=tt[i]-1;
for (auto u : g[i]){
mx=max(mx,d[u]);
}
while (top<vc.size() && vc[top].second>=tt[i]){
top++;
}
}
// cout<<mid<<":"<<dam<<endl;
return dam>=h;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>n>>h;
for (int i=0; i<n; i++){
cin>>t[i]>>d[i];
tt.push_back(t[i]);
}
tt.push_back(1);
sort(tt.begin(),tt.end());
tt.erase(unique(tt.begin(),tt.end()),tt.end());
reverse(tt.begin(),tt.end());
for (int i=0; i<tt.size(); i++){
mp[tt[i]]=i;
}
for (int i=0; i<n; i++){
g[mp[t[i]]].push_back(i);
}
ll l=0,r=2e18;
while (l+1<r){
ll mid=(l+r)/2;
// cout<<mid<<endl;
if (check(mid)){
r=mid;
}
else{
l=mid;
}
}
cout<<r<<endl;
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | F - Damage over Time |
| ユーザ | SFlyer |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 0 |
| コード長 | 1701 Byte |
| 結果 | WA |
| 実行時間 | 3125 ms |
| メモリ | 58348 KiB |
コンパイルエラー
./Main.cpp: In function ‘bool check(ll)’:
./Main.cpp:27:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
27 | for (int i=0; i<tt.size(); i++){
| ~^~~~~~~~~~
./Main.cpp:32:14: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<long long int, long long int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
32 | while (top<vc.size() && vc[top].second>=tt[i]){
| ~~~^~~~~~~~~~
./Main.cpp:37:14: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<long long int, long long int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
37 | ll cur=(top==vc.size()?0:vc[top].first);
| ~~~^~~~~~~~~~~
./Main.cpp:52:13: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::pair<long long int, long long int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
52 | while (top<vc.size() && vc[top].second>=tt[i]){
| ~~~^~~~~~~~~~
./Main.cpp: In function ‘int main()’:
./Main.cpp:73:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<long long int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
73 | for (int i=0; i<tt.size(); i++){
| ~^~~~~~~~~~
ジャッジ結果
| セット名 | 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 | 12 ms | 10644 KiB |
| 00_sample_01.txt | AC | 10 ms | 10604 KiB |
| 01_rnd_00.txt | AC | 2268 ms | 58252 KiB |
| 01_rnd_01.txt | AC | 2262 ms | 58344 KiB |
| 01_rnd_02.txt | AC | 2240 ms | 58164 KiB |
| 01_rnd_03.txt | AC | 2242 ms | 58272 KiB |
| 01_rnd_04.txt | AC | 2245 ms | 58300 KiB |
| 01_rnd_05.txt | AC | 1334 ms | 33140 KiB |
| 01_rnd_06.txt | AC | 1072 ms | 33192 KiB |
| 01_rnd_07.txt | AC | 1385 ms | 33280 KiB |
| 01_rnd_08.txt | AC | 1361 ms | 33304 KiB |
| 01_rnd_09.txt | AC | 1333 ms | 33296 KiB |
| 02_minmax_00.txt | AC | 816 ms | 32472 KiB |
| 02_minmax_01.txt | AC | 832 ms | 32508 KiB |
| 02_minmax_02.txt | AC | 839 ms | 32508 KiB |
| 02_minmax_03.txt | AC | 832 ms | 32572 KiB |
| 02_minmax_04.txt | AC | 834 ms | 32492 KiB |
| 02_minmax_05.txt | AC | 827 ms | 32440 KiB |
| 02_minmax_06.txt | AC | 830 ms | 32500 KiB |
| 02_minmax_07.txt | AC | 829 ms | 32512 KiB |
| 03_special_00.txt | AC | 3125 ms | 58348 KiB |
| 03_special_01.txt | AC | 3065 ms | 58288 KiB |
| 03_special_02.txt | WA | 2915 ms | 58248 KiB |
| 03_special_03.txt | WA | 2902 ms | 58272 KiB |
| 03_special_04.txt | AC | 2918 ms | 58276 KiB |
| 03_special_05.txt | AC | 2899 ms | 58304 KiB |
| 03_special_06.txt | AC | 2861 ms | 58244 KiB |
| 03_special_07.txt | AC | 2833 ms | 58252 KiB |
| 03_special_08.txt | AC | 2842 ms | 58184 KiB |
| 03_special_09.txt | AC | 2741 ms | 58240 KiB |
| 03_special_10.txt | AC | 2485 ms | 58280 KiB |
| 03_special_11.txt | AC | 2447 ms | 58296 KiB |
| 03_special_12.txt | AC | 2315 ms | 58284 KiB |
| 03_special_13.txt | AC | 2230 ms | 58188 KiB |
| 03_special_14.txt | AC | 2266 ms | 58348 KiB |
| 03_special_15.txt | AC | 2276 ms | 58344 KiB |
| 03_special_16.txt | AC | 2240 ms | 58312 KiB |
| 03_special_17.txt | AC | 2293 ms | 58220 KiB |
| 03_special_18.txt | AC | 2288 ms | 58248 KiB |
| 03_special_19.txt | AC | 2292 ms | 58348 KiB |