Submission #994845
Source Code Expand
#include<iostream> #include<vector> #include<iomanip> #include<algorithm> #include<numeric> #include<cmath> #include<queue> #include<set> #include<map> using namespace std; using ulong = unsigned long; using ll = long long; const int M = 1e9 + 7; #pragma unused(M) int main(){ int n, m; cin >> n >> m; vector<pair<int, int>> vec; map<int, map<int, int>> nums; for(int i=0;i<n;i++){ int x; cin >> x; vec.emplace_back(x % m, x); nums[x % m][x]++; } // sort(vec.begin(), vec.end()); // int num = vec[1].second; // int num2 = lower_bound(vec.begin(), vec.end(), pair<int, int>{m - num, -1}) -> second; // cout<<num<<' '<<num2<<endl; // println(nums); int ans = 0; for(int i=0;i<m;i++){ if(i == (m - i) % m){ ans += nums[i].size() / 2; }else{ if(i > (m - i) % m){ break; } if(!nums.count(i) || !nums.count((m - i) % m)){ continue; } auto& m1 = nums[i]; auto& m2 = nums[(m - i) % m]; int s1 = 0, s2 = 0; for(auto& p : m1){ s1 += p.second; } for(auto& p : m2){ s2 += p.second; } ans += min(s1, s2); if(s1 == s2){ continue; } if(s1 < s2){ swap(s1, s2); swap(m1, m2); } if(s1 > s2){ vector<int> v; for(auto& p : m1){ v.push_back(p.second); } sort(v.begin(), v.end()); for(int& i : v){ int d = min(i, s2); s2 -= d; i -= d; } for(int& i : v){ ans += i / 2; } // }else{ } } } cout << ans << endl; return 0; bool changed = true; while(changed){ changed = false; for(int i=0;i<m;i++){ if(!nums.count(i) || !nums.count((m - i) % m)){ continue; } auto p1 = nums[i].begin(), p2 = nums[(m - i) % m].begin(); while(p1 != nums[i].end() && p1 -> second != 1){ p1++; } if(p1 == nums[i].end()){ continue; } int n1 = p1 -> first; while(p2 != nums[(m - i) % m].end() && (p2 -> second == 0 || n1 == p2 -> first)){ p2++; } if(p2 == nums[(m - i) % m].end()){ continue; } int n2 = p2 -> first; // cout<<n1<<' '<<n2<<endl; if(n1 != n2){ nums[i][n1]--; nums[(m - i) % m][n2]--; // cout<<' '<<n1<<' '<<n2<<endl; ans++; changed = true; i--; } } } for(int i=0;i<m;i++){ if(!nums.count(i) || !nums.count((m - i) % m)){ continue; } auto p1 = nums[i].begin(), p2 = nums[(m - i) % m].begin(); while(p1 != nums[i].end() && p1 -> second == 0){ p1++; } if(p1 == nums[i].end()){ continue; } int n1 = p1 -> first; while(p2 != nums[(m - i) % m].end() && (p2 -> second == 0 || n1 == p2 -> first)){ p2++; } if(p2 == nums[(m - i) % m].end()){ continue; } int n2 = p2 -> first; // cout<<n1<<' '<<n2<<endl; if(n1 != n2){ nums[i][n1]--; nums[(m - i) % m][n2]--; // cout<<' '<<n1<<' '<<n2<<endl; ans++; i--; } } for(int i=0;i<m;i++){ if(!nums.count(i)){ continue; } for(auto& p : nums[i]){ if(p.second >= 2){ ans += p.second / 2; } } } cout << ans << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - Pair Cards |
User | sumoooru |
Language | C++14 (Clang 3.8.0) |
Score | 0 |
Code Size | 3782 Byte |
Status | WA |
Exec Time | 150 ms |
Memory | 13556 KB |
Judge Result
Set Name | sample | all | ||||||
---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 0 / 700 | ||||||
Status |
|
|
Set Name | Test Cases |
---|---|
sample | sample-01.txt, sample-02.txt |
all | sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
01-01.txt | AC | 9 ms | 888 KB |
01-02.txt | WA | 110 ms | 3956 KB |
01-03.txt | WA | 111 ms | 3956 KB |
01-04.txt | WA | 112 ms | 4212 KB |
01-05.txt | WA | 111 ms | 4084 KB |
01-06.txt | WA | 112 ms | 4084 KB |
01-07.txt | WA | 113 ms | 4084 KB |
01-08.txt | WA | 113 ms | 4084 KB |
01-09.txt | WA | 117 ms | 4212 KB |
01-10.txt | WA | 126 ms | 6900 KB |
01-11.txt | WA | 132 ms | 8948 KB |
01-12.txt | WA | 80 ms | 1400 KB |
01-13.txt | WA | 81 ms | 1400 KB |
01-14.txt | AC | 119 ms | 5748 KB |
01-15.txt | AC | 120 ms | 5748 KB |
01-16.txt | AC | 120 ms | 5748 KB |
01-17.txt | AC | 121 ms | 5748 KB |
01-18.txt | AC | 120 ms | 6004 KB |
01-19.txt | AC | 121 ms | 6644 KB |
01-20.txt | AC | 150 ms | 13556 KB |
01-21.txt | WA | 92 ms | 1528 KB |
01-22.txt | WA | 92 ms | 1528 KB |
01-23.txt | WA | 91 ms | 1528 KB |
01-24.txt | WA | 94 ms | 1528 KB |
01-25.txt | WA | 95 ms | 1784 KB |
01-26.txt | WA | 95 ms | 1784 KB |
01-27.txt | AC | 71 ms | 6904 KB |
01-28.txt | WA | 8 ms | 640 KB |
01-29.txt | AC | 4 ms | 384 KB |
01-30.txt | AC | 3 ms | 256 KB |
sample-01.txt | AC | 3 ms | 256 KB |
sample-02.txt | AC | 3 ms | 256 KB |