Submission #208571

#TimeUsernameProblemLanguageResultExecution timeMemory
208571fr_klrIce Hockey World Championship (CEOI15_bobek)C++14
100 / 100
240 ms20820 KiB
//You can't fill the hole inside you with money, drugs and cars #include<bits/stdc++.h> using namespace std; long long n, m; vector<long long> v, a, b; void create(int st, int en, vector<long long> &w){ int sz = en - st; w.push_back(0); for(int mask = 1; mask < (1 << sz); mask++) w.push_back(w[mask - (mask & -mask)] + v[st + __builtin_ctz(mask)]); } long long inp(){ long long A; cin >> A; return A; } void input(){ cin >> n >> m; for(int i = 0; i < n; i++) v.push_back(inp()); } long long matches(int p1 = 0, int p2 = b.size() - 1, long long ans = 0){ sort(a.begin(), a.end()); sort(b.begin(), b.end()); for(; p2 >= 0 and p1 < a.size(); p1++){ while(p2 >= 0 and a[p1] + b[p2] > m) p2--; ans += (p2 + 1); } return ans; } long long solve(){ int mid = n / 2; create(0, mid, a); create(mid, n, b); return matches(); } int main(){ input(); cout << solve(); }

Compilation message (stderr)

bobek.cpp: In function 'long long int matches(int, int, long long int)':
bobek.cpp:32:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(; p2 >= 0 and p1 < a.size(); p1++){
                       ~~~^~~~~~~~~~
#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...