結果
問題 | No.2114 01 Matching |
ユーザー |
|
提出日時 | 2022-10-28 22:16:05 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,188 bytes |
コンパイル時間 | 1,686 ms |
コンパイル使用メモリ | 116,184 KB |
実行使用メモリ | 135,276 KB |
最終ジャッジ日時 | 2024-07-06 01:26:36 |
合計ジャッジ時間 | 9,501 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | TLE * 1 -- * 50 |
コンパイルメッセージ
main.cpp:9:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type] 9 | main() | ^~~~
ソースコード
#include<iostream>#include<map>#include<vector>#include<algorithm>#include<atcoder/mincostflow>using namespace std;int N,M,K;map<int,vector<pair<int,int> > >mp;main(){cin>>N>>M>>K;vector<int>vs;for(int i=0;i<N+M;i++){int A;cin>>A;mp[A%K].push_back(make_pair(A,i));vs.push_back(A);}sort(vs.begin(),vs.end());vs.erase(unique(vs.begin(),vs.end()),vs.end());auto id=[&vs](int x){return lower_bound(vs.begin(),vs.end(),x)-vs.begin();};atcoder::mcf_graph<int,int>mf(vs.size()+2);int source=vs.size(),sink=source+1;for(auto it=mp.begin();it!=mp.end();it++){vector<pair<int,int> >now;now.swap(it->second);sort(now.begin(),now.end());for(int i=0;i<now.size();i++){int u=id(now[i].first);if(now[i].second<N)mf.add_edge(source,u,1,0);else mf.add_edge(u,sink,1,0);now[i].second=u;}for(int i=1;i<now.size();i++)if(now[i-1].first<now[i].first){int u=now[i-1].second,v=now[i].second;mf.add_edge(u,v,1e9,(now[i].first-now[i-1].first)/K);mf.add_edge(v,u,1e9,(now[i].first-now[i-1].first)/K);}}pair<int,int>ans=mf.flow(source,sink);if(ans.first==min(N,M))cout<<ans.second<<endl;else cout<<-1<<endl;}