結果

問題 No.3527 Minimum Abs Sum
コンテスト
ユーザー daiota
提出日時 2026-05-04 23:34:38
言語 C++17
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++17 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 1,111 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,436 ms
コンパイル使用メモリ 220,764 KB
実行使用メモリ 11,832 KB
最終ジャッジ日時 2026-05-04 23:34:44
合計ジャッジ時間 3,318 ms
ジャッジサーバーID
(参考情報)
judge1_1 / judge3_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 5 WA * 25
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<double,ll> P;
#define REP(i,n) for(ll i=0;i<ll(n);i++)









const ll MOD=1000000007;
ll a[200010],b[200010];


ll extgcd(ll a,ll b,ll & x,ll & y){
	ll g;
	if(b!=0){
		g=extgcd(b,a%b,y,x);
		y-=(a/b)*x;
	}else{
        g=a;
		x=1; y=0;
	}
	  return g;
}




ll f(ll a,ll m){
    ll x,y;
    extgcd(a,m,x,y);
    return (x%m+m)%m;
}




int main(void){
	cin.tie(nullptr);  ios_base::sync_with_stdio(false);
	ll i,j;



	ll N;
	cin >> N;
	for(i=1;i<=N;i++) cin >> a[i];
	for(i=1;i<=N;i++) cin >> b[i];


	vector<P> v;
	for(i=1;i<=N;i++){

		if(a[i]==0) continue;
		double x=1.0*b[i]/a[i];
		v.push_back(P(x,i));
	}

	ll n=v.size();
	sort(v.begin(),v.end());

	ll x=n/2,y=n/2+1;

	double p=v[x].first,q=v[y].first;
	double s=0,t=0;
	for(i=1;i<=N;i++){
		s+=fabs(a[i]*p-1.0*b[i]);
		t+=fabs(a[i]*q-1.0*b[i]);
	}


	ll ans;
	if(s<t){
		ll c=a[v[x].second],d=b[v[x].second];
		ans=d*f(c,MOD);
		ans%=MOD;
	}
	else{
		ll c=a[v[y].second],d=b[v[y].second];
		ans=d*f(c,MOD);
		ans%=MOD;

	}


	cout << ans << endl;




	return 0;

}
0