提出 #52091252
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
#define ii pair<int,int>
#define iii tuple<int,int,int>
#define fi first
#define se second
#define endl '\n'
#define debug(x) cout << #x << ": " << x << endl
#define pub push_back
#define pob pop_back
#define puf push_front
#define pof pop_front
#define lb lower_bound
#define ub upper_bound
#define rep(x,start,end) for(int x=(start)-((start)>(end));x!=(end)-((start)>(end));((start)<(end)?x++:x--))
#define all(x) (x).begin(),(x).end()
#define sz(x) (int)(x).size()
mt19937 rng(chrono::system_clock::now().time_since_epoch().count());
int n;
ii arr[200005];
int ans[200005];
int idx[200005];
int pos[200005];
set<int> s;
int l[200005],r[200005];
int sum=0;
int curr=0;
int ss=0;
void add(int i){
auto it=s.insert(i).fi;
int a=*prev(it);
int b=*next(it);
l[i]=a;
r[i]=b;
r[a]=l[b]=i;
if (i<curr){
ss++;
sum+=arr[idx[i]].fi;
}
}
void del(int i){
auto it=s.find(i);
if (i<=curr){
ss--;
sum-=arr[idx[i]].fi;
}
if (i==curr){
curr=l[curr];
}
int a=*prev(it);
int b=*next(it);
r[a]=b;
l[b]=a;
s.erase(it);
}
void rebal(int k){
while (ss<k && r[curr]!=200004){
curr=r[curr];
ss++;
sum+=arr[idx[curr]].fi;
}
while (ss>k){
ss--;
sum-=arr[idx[curr]].fi;
curr=l[curr];
}
}
void dnc(int l,int r,int kl,int kr){
int km=kl+kr>>1;
int best=1e18;
int idx=-1;
rep(x,l,r+1){
rebal(km-1);
if (ss==km-1){
if (best>sum+arr[x].fi+arr[x].se){
best=sum+arr[x].fi+arr[x].se;
idx=x;
}
}
add(pos[x]);
}
//cout<<l<<" "<<r<<" "<<kl<<" "<<kr<<" "<<idx<<" "<<km<<endl;
ans[km]=best;
rep(x,r+1,idx) del(pos[x]);
if (km!=kr) dnc(idx,r,km+1,kr);
rep(x,idx,l) del(pos[x]);
if (km!=kl) dnc(l,idx,kl,km-1);
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin.exceptions(ios::badbit | ios::failbit);
s={0,200004};
r[0]=200004;
l[200004]=0;
cin>>n;
rep(x,1,n+1) cin>>arr[x].fi>>arr[x].se;
rep(x,1,n+1) arr[x].fi=-arr[x].fi;
sort(arr+1,arr+n+1,[](ii i,ii j){
return i.se<j.se;
});
rep(x,1,n+1) idx[x]=x;
sort(idx+1,idx+n+1,[](int i,int j){
return arr[i]<arr[j];
});
rep(x,1,n+1) pos[idx[x]]=x;
dnc(1,n,1,n);
rep(x,1,n+1) cout<<-ans[x]<<endl;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | G - Max (Sum - Max) |
| ユーザ | errorgorn |
| 言語 | C++ 20 (gcc 12.2) |
| 得点 | 650 |
| コード長 | 2411 Byte |
| 結果 | AC |
| 実行時間 | 1569 ms |
| メモリ | 24160 KiB |
コンパイルエラー
Main.cpp: In function ‘void dnc(long long int, long long int, long long int, long long int)’:
Main.cpp:90:18: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
90 | int km=kl+kr>>1;
| ~~^~~
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 650 / 650 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | example0.txt, example1.txt, example2.txt |
| All | example0.txt, example1.txt, example2.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| example0.txt | AC | 1 ms | 3536 KiB |
| example1.txt | AC | 1 ms | 3524 KiB |
| example2.txt | AC | 1 ms | 3544 KiB |
| test_00.txt | AC | 220 ms | 8912 KiB |
| test_01.txt | AC | 270 ms | 9860 KiB |
| test_02.txt | AC | 1159 ms | 22144 KiB |
| test_03.txt | AC | 489 ms | 13680 KiB |
| test_04.txt | AC | 149 ms | 7536 KiB |
| test_05.txt | AC | 1219 ms | 23968 KiB |
| test_06.txt | AC | 1220 ms | 23940 KiB |
| test_07.txt | AC | 1216 ms | 23912 KiB |
| test_08.txt | AC | 1220 ms | 24004 KiB |
| test_09.txt | AC | 1216 ms | 24008 KiB |
| test_10.txt | AC | 1219 ms | 23964 KiB |
| test_11.txt | AC | 1215 ms | 24024 KiB |
| test_12.txt | AC | 1219 ms | 24016 KiB |
| test_13.txt | AC | 1219 ms | 24012 KiB |
| test_14.txt | AC | 1223 ms | 24008 KiB |
| test_15.txt | AC | 1546 ms | 23828 KiB |
| test_16.txt | AC | 1566 ms | 23880 KiB |
| test_17.txt | AC | 1563 ms | 23832 KiB |
| test_18.txt | AC | 1545 ms | 23824 KiB |
| test_19.txt | AC | 1569 ms | 23956 KiB |
| test_20.txt | AC | 1216 ms | 24012 KiB |
| test_21.txt | AC | 1219 ms | 24004 KiB |
| test_22.txt | AC | 1212 ms | 24012 KiB |
| test_23.txt | AC | 1221 ms | 24012 KiB |
| test_24.txt | AC | 1220 ms | 24000 KiB |
| test_25.txt | AC | 684 ms | 24028 KiB |
| test_26.txt | AC | 692 ms | 23976 KiB |
| test_27.txt | AC | 688 ms | 24012 KiB |
| test_28.txt | AC | 692 ms | 23952 KiB |
| test_29.txt | AC | 695 ms | 24056 KiB |
| test_30.txt | AC | 738 ms | 23964 KiB |
| test_31.txt | AC | 701 ms | 23836 KiB |
| test_32.txt | AC | 716 ms | 23964 KiB |
| test_33.txt | AC | 790 ms | 23956 KiB |
| test_34.txt | AC | 738 ms | 23888 KiB |
| test_35.txt | AC | 1233 ms | 24024 KiB |
| test_36.txt | AC | 1214 ms | 23960 KiB |
| test_37.txt | AC | 1218 ms | 24140 KiB |
| test_38.txt | AC | 1228 ms | 23876 KiB |
| test_39.txt | AC | 1205 ms | 23976 KiB |
| test_40.txt | AC | 1218 ms | 24016 KiB |
| test_41.txt | AC | 1222 ms | 24160 KiB |
| test_42.txt | AC | 1221 ms | 23876 KiB |
| test_43.txt | AC | 1222 ms | 24004 KiB |
| test_44.txt | AC | 1210 ms | 23964 KiB |
| test_45.txt | AC | 1217 ms | 24132 KiB |
| test_46.txt | AC | 1216 ms | 23904 KiB |
| test_47.txt | AC | 1210 ms | 23940 KiB |
| test_48.txt | AC | 1214 ms | 23916 KiB |
| test_49.txt | AC | 1217 ms | 24140 KiB |
| test_50.txt | AC | 1209 ms | 23892 KiB |
| test_51.txt | AC | 1204 ms | 24020 KiB |
| test_52.txt | AC | 1222 ms | 24008 KiB |
| test_53.txt | AC | 1217 ms | 24144 KiB |
| test_54.txt | AC | 1220 ms | 23880 KiB |
| test_55.txt | AC | 1 ms | 3536 KiB |
| test_56.txt | AC | 643 ms | 23704 KiB |