結果
問題 | No.2057 Ising Model |
ユーザー | butsurizuki |
提出日時 | 2022-08-26 21:39:07 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 716 bytes |
コンパイル時間 | 3,033 ms |
コンパイル使用メモリ | 245,288 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-13 22:07:18 |
合計ジャッジ時間 | 3,923 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 44 |
ソースコード
#include<bits/stdc++.h> using namespace std; long long n,a,b; // (1,-1,1,-1,...) // f(#(1),#(-1)) long long f(long long x,long long y){ long long res=b*(y-x); long long paint=min(n-1,2*y); res+=a*((n-1-paint)-paint); return res; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> a >> b; long long l=0,r=n/2; long long res=8e18; while(r-l>=5){ long long t1=(2*l+r)/3; long long t2=(l+2*r)/3; long long v1=f(n-t1,t1); long long v2=f(n-t2,t2); res=min({res,v1,v2}); if(v1>v2){l=t1;} else{r=t2;} } for(long long i=l;i<=r;i++){ // cout << i << ":" << f(i,n-i) << "\n"; res=min(res,f(n-i,i)); } cout << res << "\n"; return 0; }