# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
37045 |
2017-12-20T16:23:13 Z |
Dat160601 |
San (COCI17_san) |
C++14 |
|
176 ms |
9348 KB |
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
int n,hi[43];
long long m,gold[43],ans=0;
vector <long long> val,val_left[43],val_right[43];
void backtrack_left(int cur,int last,long long sum){
if(cur==(n+3)/2){
int pos=lower_bound(val.begin(),val.end(),last)-val.begin();
val_left[pos].pb(sum);
return;
}
backtrack_left(cur+1,last,sum);
if(hi[cur]>=last){
backtrack_left(cur+1,hi[cur],sum+gold[cur]);
}
}
void backtrack_right(int cur,int last,int fr,long long sum){
if(cur==n+1){
int pos=lower_bound(val.begin(),val.end(),fr)-val.begin();
val_right[pos].pb(sum);
return;
}
backtrack_right(cur+1,last,fr,sum);
if(hi[cur]>=last){
if(fr==0) fr=hi[cur];
backtrack_right(cur+1,hi[cur],fr,sum+gold[cur]);
}
}
int main(){
cin>>n>>m;
val.pb(0);
for(int i=1;i<=n;i++){
cin>>hi[i]>>gold[i];
val.pb(hi[i]);
}
sort(val.begin(),val.end());
backtrack_left(1,0,0);
backtrack_right((n+3)/2,0,0,0);
n=(int)val.size();
for(int i=0;i<n;i++) sort(val_right[i].begin(),val_right[i].end());
for(int i=0;i<n;i++){
for(int j=0;j<(int)val_left[i].size();j++){
long long curval=val_left[i][j];
ans+=val_right[0].end()-lower_bound(val_right[0].begin(),val_right[0].end(),m-curval);
for(int ij=i;ij<n;ij++){
if(ij==0) continue;
ans+=val_right[ij].end()-lower_bound(val_right[ij].begin(),val_right[ij].end(),m-curval);
}
}
}
cout<<ans;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
2020 KB |
Output is correct |
2 |
Correct |
0 ms |
2020 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
2020 KB |
Output is correct |
2 |
Correct |
0 ms |
2020 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
2996 KB |
Output is correct |
2 |
Correct |
0 ms |
2160 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
23 ms |
4172 KB |
Output is correct |
2 |
Correct |
3 ms |
2436 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
176 ms |
9348 KB |
Output is correct |
2 |
Correct |
19 ms |
4180 KB |
Output is correct |