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