結果
問題 | No.1361 [Zelkova 4th Tune *] QUADRUPLE-SEQUENCEの詩 |
ユーザー |
![]() |
提出日時 | 2021-01-23 02:04:48 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 1,824 ms / 2,000 ms |
コード長 | 2,942 bytes |
コンパイル時間 | 1,283 ms |
コンパイル使用メモリ | 114,032 KB |
実行使用メモリ | 54,008 KB |
最終ジャッジ日時 | 2024-12-29 11:08:31 |
合計ジャッジ時間 | 41,414 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 74 |
ソースコード
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<vector>#include<cmath>#include<algorithm>#include<map>#include<queue>#include<deque>#include<iomanip>#include<tuple>#include<cassert>#include<set>#include<complex>#include<numeric>#include<functional>using namespace std;typedef long long int LL;typedef pair<LL,LL> P;typedef pair<LL,int> LP;const LL INF=1LL<<60;const LL MAX=1e9+7;void array_show(int *array,int array_n,char middle=' '){for(int i=0;i<array_n;i++)printf("%d%c",array[i],(i!=array_n-1?middle:'\n'));}void array_show(LL *array,int array_n,char middle=' '){for(int i=0;i<array_n;i++)printf("%lld%c",array[i],(i!=array_n-1?middle:'\n'));}void array_show(vector<int> &vec_s,int vec_n=-1,char middle=' '){if(vec_n==-1)vec_n=vec_s.size();for(int i=0;i<vec_n;i++)printf("%d%c",vec_s[i],(i!=vec_n-1?middle:'\n'));}void array_show(vector<LL> &vec_s,int vec_n=-1,char middle=' '){if(vec_n==-1)vec_n=vec_s.size();for(int i=0;i<vec_n;i++)printf("%lld%c",vec_s[i],(i!=vec_n-1?middle:'\n'));}int main(){LL n,m,p,q,r;int i,j,k;LL a,b,c;cin>>n>>m>>p>>q>>r;vector<LL> v1,v2;vector<LL> va(n),vb(m),vc(p),vd(q);map<LL,P> m1,m2;for(i=0;i<n;i++)cin>>va[i];for(i=0;i<m;i++)cin>>vb[i];for(i=0;i<p;i++)cin>>vc[i];for(i=0;i<q;i++)cin>>vd[i];for(i=0;i<n;i++){for(j=0;j<m;j++){v1.push_back(va[i]*vb[j]);m1[va[i]*vb[j]]=make_pair(va[i],vb[j]);}}for(i=0;i<p;i++){for(j=0;j<q;j++){v2.push_back(vc[i]*vd[j]);m2[vc[i]*vd[j]]=make_pair(vc[i],vd[j]);}}sort(v1.begin(),v1.end());sort(v2.begin(),v2.end());LL z[3]={-INF,INF};while(z[1]-z[0]>1){z[2]=(z[0]+z[1])/2;a=0;for(i=0;i<v1.size();i++){if(v1[i]==0){if(z[2]>=0)a+=v2.size();continue;}if(v1[i]>0){if(z[2]>=0)b=z[2]/v1[i];else b=-((-z[2]-1)/v1[i])-1;auto itr=upper_bound(v2.begin(),v2.end(),b);a+=distance(v2.begin(),itr);}else{if(z[2]>=0)b=-(z[2]/(-v1[i]));else b=(-z[2]-1)/(-v1[i])+1;auto itr=lower_bound(v2.begin(),v2.end(),b);a+=distance(itr,v2.end());}}if(a<r)z[0]=z[2];else z[1]=z[2];}cout<<z[1]<<endl;for(auto node:m1){auto itr=m2.begin();if(node.first==0){if(z[1])continue;}else{if(abs(z[1])%node.first)continue;a=z[1]/node.first;itr=m2.find(a);if(itr==m2.end())continue;}cout<<node.second.first<<" "<<node.second.second<<" ";cout<<itr->second.first<<" "<<itr->second.second<<endl;return 0;}}