Submission #307706

#TimeUsernameProblemLanguageResultExecution timeMemory
307706HemimorIce Hockey World Championship (CEOI15_bobek)C++14
100 / 100
367 ms21024 KiB
#include <algorithm> #include <iostream> #include <iomanip> #include <numeric> #include <cassert> #include <vector> #include <random> #include <cmath> #include <queue> #include <set> #include <map> #define syosu(x) fixed<<setprecision(x) using namespace std; typedef long long ll; typedef unsigned int uint; typedef unsigned long long ull; typedef pair<int,int> P; typedef pair<double,double> pdd; typedef pair<ll,ll> pll; typedef vector<int> vi; typedef vector<vi> vvi; typedef vector<double> vd; typedef vector<vd> vvd; typedef vector<ll> vl; typedef vector<vl> vvl; typedef vector<string> vs; typedef vector<P> vp; typedef vector<vp> vvp; typedef vector<pll> vpll; typedef pair<int,P> pip; typedef vector<pip> vip; const int inf=1<<30; const ll INF=1ll<<60; const double pi=acos(-1); const double eps=1e-8; const ll mod=1e9+7; const int dx[8]={-1,0,1,0,1,1,-1,-1},dy[8]={0,1,0,-1,1,-1,1,-1}; vi vin(int n,int d=0){ vi a(n); for(int i=0;i<n;i++){ cin>>a[i]; a[i]-=d; } return a; } vl vlin(int n,int d=0){ vl a(n); for(auto &i:a){ cin>>i; i-=d; } return a; } vvi vvin(int n,int m){ vvi a(n,vi(m)); for(int i=0;i<n;i++) for(auto &j:a[i]) cin>>j; return a; } vvi gin(int n,int m,int d=1){ vvi g(n); for(int i=0;i<m;i++){ int u,v; cin>>u>>v; u-=d,v-=d; g[u].push_back(v); g[v].push_back(u); } return g; } void vout(vi a){ int n=a.size(); cout<<n<<" :"; for(auto i:a) cout<<' '<<i; cout<<endl; } void vvout(vvi a){ int n=a.size(); for(int i=0;i<n;i++) vout(a[i]); } bool ingrid(int x,int y,int n,int m){ return 0<=x&&x<n&&0<=y&&y<m; } vl f(vl a){ int n=a.size(); vl b; for(int i=0;i<1<<n;i++){ ll x=0; for(int j=0;j<n;j++) if(i&1<<j) x+=a[j]; b.push_back(x); } sort(b.begin(),b.end()); return b; } ll n,m; int main(){ ios::sync_with_stdio(0); cin.tie(0); cin>>n>>m; vl a=vlin(n),b; for(int i=0;i<n/2;i++) b.push_back(a[i]); vl c=f(b); b.clear(); for(int i=n/2;i<n;i++) b.push_back(a[i]); vl d=f(b); int I=(int)d.size()-1; ll res=0; for(auto i:c){ while(I>=0&&i+d[I]>m) I--; res+=I+1; } cout<<res<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...