Submission #63281378
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
#define INF 1234567890
#define ll long long
int N;
ll X;
ll U[202020], D[202020];
bool f(ll H)
{
ll UL = -(ll)1e18, UR = (ll)1e18;
for(int i=1; i<=N; i++)
{
// U[i] + D[i] = H가 되어야 한다.
ll sub = U[i] + D[i] - H;
ll minU = max(0LL, sub - D[i]);
ll ul = max(1LL, U[i] - sub);
ll ur = U[i] - minU;
ll dl = H - ur;
ll dr = H - ul;
if (ul > ur) return false;
UL -= X;
UR += X;
UL = max(UL, ul);
UR = min(UR, ur);
if (i >= 2)
{
ll DL = H - UR;
ll DR = H - UL;
DL -= X;
DR += X;
DL = max(DL, dl);
DR = min(DR, dr);
UL = max(UL, H-DR);
UR = min(UR, H-DL);
}
if (UL > UR) return false;
}
return true;
}
int main()
{
ios::sync_with_stdio(0); cin.tie(0);
cin >> N >> X;
ll ub = (ll)1e18, sum = 0;
for(int i=1; i<=N; i++)
{
cin >> U[i] >> D[i];
ub = min(ub, U[i] + D[i]);
sum += U[i] + D[i];
}
// H \in [2, ub]
ll lo = 2, hi = ub+1;
for(int i=0; i<40; i++)
{
ll mid = lo+hi>>1;
if (f(mid)) lo = mid;
else hi = mid;
}
cout << sum - lo*N << "\n";
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Smooth Occlusion |
| User | edenooo |
| Language | C++ 20 (gcc 12.2) |
| Score | 500 |
| Code Size | 1438 Byte |
| Status | AC |
| Exec Time | 57 ms |
| Memory | 6760 KiB |
Compile Error
Main.cpp: In function ‘int main()’:
Main.cpp:68:20: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
68 | ll mid = lo+hi>>1;
| ~~^~~
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 500 / 500 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt, 01_random_45.txt, 01_random_46.txt, 01_random_47.txt, 01_random_48.txt, 01_random_49.txt, 01_random_50.txt, 01_random_51.txt, 01_random_52.txt, 01_random_53.txt, 01_random_54.txt, 01_random_55.txt, 01_random_56.txt, 01_random_57.txt, 01_random_58.txt, 01_random_59.txt, 01_random_60.txt, 01_random_61.txt, 01_random_62.txt, 01_random_63.txt, 01_random_64.txt, 01_random_65.txt, 01_random_66.txt, 01_random_67.txt, 01_random_68.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 3632 KiB |
| 00_sample_01.txt | AC | 1 ms | 3512 KiB |
| 00_sample_02.txt | AC | 1 ms | 3512 KiB |
| 00_sample_03.txt | AC | 1 ms | 3504 KiB |
| 01_random_04.txt | AC | 46 ms | 6612 KiB |
| 01_random_05.txt | AC | 49 ms | 6632 KiB |
| 01_random_06.txt | AC | 48 ms | 6572 KiB |
| 01_random_07.txt | AC | 46 ms | 6704 KiB |
| 01_random_08.txt | AC | 50 ms | 6632 KiB |
| 01_random_09.txt | AC | 55 ms | 6760 KiB |
| 01_random_10.txt | AC | 46 ms | 6596 KiB |
| 01_random_11.txt | AC | 51 ms | 6564 KiB |
| 01_random_12.txt | AC | 49 ms | 6512 KiB |
| 01_random_13.txt | AC | 50 ms | 6628 KiB |
| 01_random_14.txt | AC | 53 ms | 6632 KiB |
| 01_random_15.txt | AC | 55 ms | 6568 KiB |
| 01_random_16.txt | AC | 49 ms | 6640 KiB |
| 01_random_17.txt | AC | 50 ms | 6756 KiB |
| 01_random_18.txt | AC | 50 ms | 6568 KiB |
| 01_random_19.txt | AC | 47 ms | 6572 KiB |
| 01_random_20.txt | AC | 47 ms | 6640 KiB |
| 01_random_21.txt | AC | 56 ms | 6704 KiB |
| 01_random_22.txt | AC | 47 ms | 6624 KiB |
| 01_random_23.txt | AC | 48 ms | 6572 KiB |
| 01_random_24.txt | AC | 51 ms | 6640 KiB |
| 01_random_25.txt | AC | 51 ms | 6564 KiB |
| 01_random_26.txt | AC | 49 ms | 6644 KiB |
| 01_random_27.txt | AC | 55 ms | 6636 KiB |
| 01_random_28.txt | AC | 47 ms | 6568 KiB |
| 01_random_29.txt | AC | 51 ms | 6504 KiB |
| 01_random_30.txt | AC | 43 ms | 6636 KiB |
| 01_random_31.txt | AC | 50 ms | 6624 KiB |
| 01_random_32.txt | AC | 49 ms | 6620 KiB |
| 01_random_33.txt | AC | 55 ms | 6544 KiB |
| 01_random_34.txt | AC | 43 ms | 6204 KiB |
| 01_random_35.txt | AC | 45 ms | 6352 KiB |
| 01_random_36.txt | AC | 15 ms | 4432 KiB |
| 01_random_37.txt | AC | 3 ms | 3588 KiB |
| 01_random_38.txt | AC | 25 ms | 4904 KiB |
| 01_random_39.txt | AC | 42 ms | 6052 KiB |
| 01_random_40.txt | AC | 9 ms | 4016 KiB |
| 01_random_41.txt | AC | 22 ms | 4680 KiB |
| 01_random_42.txt | AC | 27 ms | 5412 KiB |
| 01_random_43.txt | AC | 24 ms | 5068 KiB |
| 01_random_44.txt | AC | 36 ms | 5692 KiB |
| 01_random_45.txt | AC | 20 ms | 4616 KiB |
| 01_random_46.txt | AC | 56 ms | 6640 KiB |
| 01_random_47.txt | AC | 56 ms | 6708 KiB |
| 01_random_48.txt | AC | 57 ms | 6636 KiB |
| 01_random_49.txt | AC | 57 ms | 6640 KiB |
| 01_random_50.txt | AC | 57 ms | 6704 KiB |
| 01_random_51.txt | AC | 42 ms | 6636 KiB |
| 01_random_52.txt | AC | 43 ms | 6708 KiB |
| 01_random_53.txt | AC | 49 ms | 6504 KiB |
| 01_random_54.txt | AC | 40 ms | 6700 KiB |
| 01_random_55.txt | AC | 37 ms | 6636 KiB |
| 01_random_56.txt | AC | 38 ms | 6500 KiB |
| 01_random_57.txt | AC | 43 ms | 6608 KiB |
| 01_random_58.txt | AC | 41 ms | 6760 KiB |
| 01_random_59.txt | AC | 39 ms | 6572 KiB |
| 01_random_60.txt | AC | 42 ms | 6544 KiB |
| 01_random_61.txt | AC | 41 ms | 6708 KiB |
| 01_random_62.txt | AC | 46 ms | 6708 KiB |
| 01_random_63.txt | AC | 56 ms | 6572 KiB |
| 01_random_64.txt | AC | 55 ms | 6708 KiB |
| 01_random_65.txt | AC | 55 ms | 6620 KiB |
| 01_random_66.txt | AC | 55 ms | 6576 KiB |
| 01_random_67.txt | AC | 1 ms | 3432 KiB |
| 01_random_68.txt | AC | 1 ms | 3504 KiB |