結果
問題 |
No.733 分身並列コーディング
|
ユーザー |
![]() |
提出日時 | 2019-03-01 23:46:48 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
MLE
|
実行時間 | - |
コード長 | 1,322 bytes |
コンパイル時間 | 1,681 ms |
コンパイル使用メモリ | 177,156 KB |
実行使用メモリ | 540,960 KB |
最終ジャッジ日時 | 2024-06-23 12:12:33 |
合計ジャッジ時間 | 6,251 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 15 MLE * 1 -- * 30 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define rep(i,s,n) for(int i = s;i<n;i++) #define rrep(i,s,n) for(int i = (n)-1;i>=(s);i--) #define all(v) (v).begin(),(v).end() #define chmin(a,b) a=min((a),(b)) #define chmax(a,b) a=max((a),(b)) #define endl '\n' #define IOS() ios_base::sync_with_stdio(0);cin.tie(0) typedef long long ll; typedef pair<int,int>pint; typedef vector<int>vint; const ll MOD=1000000007,INF=1e18; int T,N; int t[100010]; map<vint,bool>mp; int ans=INF; void solve(int cnt,vint& v){ if(mp[v])return; mp[v]=1; if(cnt==N){ rep(i,0,N){ if(v[i]==0)chmin(ans,i); if(i==N-1){ chmin(ans,N); return; } } } rep(i,0,N){ if(v[i]+t[cnt]>T)continue; if(v[i]==0){ v[i]+=t[cnt]; solve(cnt+1,v); v[i]-=t[cnt]; return; }else{ v[i]+=t[cnt]; solve(cnt+1,v); v[i]-=t[cnt]; if(i==N-1)return; } } } signed main() { IOS(); cin>>T>>N; rep(i,0,N)cin>>t[i]; vint v(N); solve(0,v); cout<<ans<<endl; return 0; }