提出 #42214815


ソースコード 拡げる

#include<cstdio>
#include<algorithm>
using namespace std;
#define Ls(i,l,r) for(int i=l;i<r;++i)
#define Rs(i,l,r) for(int i=l;i>r;--i)
#define Le(i,l,r) for(int i=l;i<=r;++i)
#define Re(i,l,r) for(int i=l;i>=r;--i)
#define L(i,l) for(int i=0;i<l;++i)
#define E(i,l) for(int i=1;i<=l;++i)
#define W(t) while(t--)
const int N=300010;
int n,cur;
typedef long long ll;
ll l,r=1e18,h;
struct att{
    int t,d;
    bool operator<(const att& x)const{
        return 1ll*t*d>1ll*x.t*x.d;
    }
}a[N];
bool check(ll mid){
    __int128 res=0;
    E(i, cur){
        if(mid>=a[i].t){//如果当前的时间还可以供全部发挥
            res+=(mid-a[i].t+1)*__int128(a[i].d)*a[i].t;
            mid=a[i].t-1;
        }
        __int128 x=1ll*min(1ll*a[i+1].t,mid)*a[i+1].d/a[i].d;
        res+=(x+1+mid)*(mid-x)/2*a[i].d;
        //那么处于 x+1~mid 间的时间都必须使用i技能
        mid=x;
    }
    if(res>=h)return true;
    else return false;
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("1.in","r",stdin);
    // freopen("1.out","w",stdout);
    // ios::sync_with_stdio(0);
    // cin.tie(0);
    // cout.tie(0);
    #endif
    // Insert Code Here
    scanf("%d%lld",&n,&h);
    E(i, n)scanf("%d%d",&a[i].t,&a[i].d);
    sort(a+1,a+1+n);
    a[0].t=2e9;
    E(i, n)if(a[i].t<a[cur].t&&a[i].d>a[cur].d)a[++cur]=a[i];
    // E(i, cur)printf("%d %d\n",a[i].t,a[i].d);
    a[cur+1].t=a[cur+1].d=0;
    // printf("%d\n",check(13));
    while(l<r){
        ll mid=l+r>>1;
        // printf("%lld\n",mid);
        if(check(mid))r=mid;
        else l=mid+1;
    }
    printf("%lld",l);
    // bool f=check(2);
    // printf("%d\n",f);
    return 0;
}

提出情報

提出日時
問題 F - Damage over Time
ユーザ WUSICHENG
言語 C++ (GCC 9.2.1)
得点 525
コード長 1722 Byte
結果 AC
実行時間 394 ms
メモリ 4056 KiB

コンパイルエラー

./Main.cpp: In function ‘int main()’:
./Main.cpp:54:17: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
   54 |         ll mid=l+r>>1;
      |                ~^~
./Main.cpp:45:10: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   45 |     scanf("%d%lld",&n,&h);
      |     ~~~~~^~~~~~~~~~~~~~~~
./Main.cpp:46:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   46 |     E(i, n)scanf("%d%d",&a[i].t,&a[i].d);
      |            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 525 / 525
結果
AC × 2
AC × 40
セット名 テストケース
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 1644 KiB
00_sample_01.txt AC 2 ms 1676 KiB
01_rnd_00.txt AC 94 ms 3980 KiB
01_rnd_01.txt AC 91 ms 4036 KiB
01_rnd_02.txt AC 90 ms 3964 KiB
01_rnd_03.txt AC 91 ms 3968 KiB
01_rnd_04.txt AC 91 ms 3976 KiB
01_rnd_05.txt AC 52 ms 4052 KiB
01_rnd_06.txt AC 52 ms 4052 KiB
01_rnd_07.txt AC 55 ms 3956 KiB
01_rnd_08.txt AC 52 ms 4020 KiB
01_rnd_09.txt AC 52 ms 4012 KiB
02_minmax_00.txt AC 46 ms 3964 KiB
02_minmax_01.txt AC 61 ms 3996 KiB
02_minmax_02.txt AC 61 ms 4048 KiB
02_minmax_03.txt AC 71 ms 4040 KiB
02_minmax_04.txt AC 48 ms 4052 KiB
02_minmax_05.txt AC 61 ms 4056 KiB
02_minmax_06.txt AC 62 ms 4008 KiB
02_minmax_07.txt AC 74 ms 4016 KiB
03_special_00.txt AC 238 ms 4048 KiB
03_special_01.txt AC 211 ms 4052 KiB
03_special_02.txt AC 209 ms 3972 KiB
03_special_03.txt AC 206 ms 3968 KiB
03_special_04.txt AC 204 ms 3980 KiB
03_special_05.txt AC 203 ms 4004 KiB
03_special_06.txt AC 202 ms 3996 KiB
03_special_07.txt AC 202 ms 4016 KiB
03_special_08.txt AC 201 ms 4036 KiB
03_special_09.txt AC 203 ms 4012 KiB
03_special_10.txt AC 394 ms 4016 KiB
03_special_11.txt AC 389 ms 3980 KiB
03_special_12.txt AC 386 ms 4052 KiB
03_special_13.txt AC 388 ms 3976 KiB
03_special_14.txt AC 382 ms 3992 KiB
03_special_15.txt AC 387 ms 3964 KiB
03_special_16.txt AC 390 ms 4008 KiB
03_special_17.txt AC 384 ms 3980 KiB
03_special_18.txt AC 383 ms 3964 KiB
03_special_19.txt AC 382 ms 3968 KiB