This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long n,k;
cin>>n>>k;
vector<pair<long long,long long>> vec;
for(long long n1=n;n1>0;n1--)
{
long long a,b;
cin>>a>>b;
vec.push_back({a,b});
}
long long right=n/2;
long long res=0;
vector<pair<long long,long long>> l;
for(long long i=0;i<pow(2,right);i++)
{
long long br=i;
long long lastval=-1,last=-1,sum=0;
bool pos=true;
for(long long j=0;br>0;br=br>>1,j++)
{
if(br&1==1)
{
if(vec[j].first<lastval)
{
pos=false;
break;
}
else
{
lastval=vec[j].first;
last=j;
sum+=vec[j].second;
}
}
}
if(pos==true)
{
if(last!=-1)
l.push_back({sum,lastval});
}
}
vector<long long> r[41];
for(long long i=0;i<pow(2,n-right);i++)
{
long long br=i;
long long lastval=-1,first=-1,sum=0;
bool pos=true;
for(long long j=0;br>0;br=br>>1,j++)
{
if(br&1==1)
{
if(vec[j+right].first<lastval)
{
pos=false;
break;
}
else
{
lastval=vec[j+right].first;
if(first==-1)
first=j+right;
sum+=vec[j+right].second;
}
}
}
if(pos==true)
{
if(first!=-1)
{
r[first].push_back(sum);
if(sum>=k)
res++;
}
}
}
for(long long i=0;i<=40;i++)
{
sort(r[i].begin(),r[i].end());
}
for(auto it : l)
{
if(it.first>=k)
res++;
for(long long i=0;i<=40;i++)
{
if(vec[i].first>=it.second)
{
long long br=it.first;
long long l=0,rr=r[i].size()-1;
long long m=(l+rr)/2;
for(;l<=rr;m=(l+rr)/2)
{
if(r[i][m]+br<k)
{
l=m+1;
}
else
rr=m-1;
}
res+=r[i].size()-l;
}
}
}
cout<<res;
return 0;
}
Compilation message (stderr)
san.cpp: In function 'int main()':
san.cpp:26:20: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]
26 | if(br&1==1)
| ~^~~
san.cpp:59:20: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]
59 | if(br&1==1)
| ~^~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |