結果
| 問題 |
No.173 カードゲーム(Medium)
|
| コンテスト | |
| ユーザー |
beet
|
| 提出日時 | 2019-04-06 18:07:07 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 1,155 ms / 3,000 ms |
| コード長 | 1,225 bytes |
| コンパイル時間 | 2,317 ms |
| コンパイル使用メモリ | 201,544 KB |
| 最終ジャッジ日時 | 2025-01-07 01:25:53 |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 10 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:11:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
11 | scanf("%d %f %f",&n,&fpa,&fpb);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include<bits/stdc++.h>
using namespace std;
using Int = long long;
template<typename T1,typename T2> inline void chmin(T1 &a,T2 b){if(a>b) a=b;}
template<typename T1,typename T2> inline void chmax(T1 &a,T2 b){if(a<b) a=b;}
//INSERT ABOVE HERE
signed main(){
int n;
float fpa,fpb;
scanf("%d %f %f",&n,&fpa,&fpb);
int pa=fpa*1000;
int pb=fpb*1000;
vector<int> va(n),vb(n);
for(int i=0;i<n;i++) cin>>va[i];
for(int i=0;i<n;i++) cin>>vb[i];
sort(va.begin(),va.end());
sort(vb.begin(),vb.end());
random_device rd;
mt19937 mt{rd()};
const int MAX = 1e6;
uniform_int_distribution<int> ud(1,1000);
int cnt=0,sum=0;
for(int t=0;t<MAX;t++){
int sa=0,sb=0;
auto ta=va,tb=vb;
for(int i=1;i<=n;i++){
int ida=0,idb=0;
if(i<n){
uniform_int_distribution<int> nx(1,n-i);
int x=ud(mt);
int y=ud(mt);
if(x>pa) ida=nx(mt);
if(y>pb) idb=nx(mt);
}
int res=ta[ida]+tb[idb];
if(ta[ida]>tb[idb]) sa+=res;
else sb+=res;
ta.erase(ta.begin()+ida);
tb.erase(tb.begin()+idb);
}
if(sa>sb) cnt++;
sum++;
}
printf("%.12f\n",(double)cnt/sum);
return 0;
}
beet