Submission #978570

#TimeUsernameProblemLanguageResultExecution timeMemory
978570vjudge1Council (JOI23_council)C++17
16 / 100
4058 ms25680 KiB
#include <time.h> #include <cstdlib> #include <stack> #include <numeric> #include <unordered_map> #include <unordered_set> #include <iomanip> #include <map> #include <set> #include <iterator> #include <deque> #include <queue> #include <sstream> #include <array> #include <string> #include <tuple> #include <chrono> #include <cassert> #include <cstdio> #include <cstring> #include <list> #include <iostream> #include <vector> #include <cmath> #include <algorithm> #include <bitset> using namespace std; int tt = 1, n, m; int A[300001][21], cnt[22]; map<vector<int>, int> mp; int main(){ ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); cin >> n >> m; for(int i = 1; i <= n; i++){ vector<int> v; for(int j = 1; j <= m; j++){ cin >> A[i][j]; cnt[j] += A[i][j]; v.push_back(A[i][j]); } if(m == 2) mp[v]++; } for(int i = 1; i <= n; i++){ int mx = 0; if(m == 2){ vector<int> vv; for(int j = 1; j <= m; j++) vv.push_back(A[i][j]); mp[vv]--; int f1 = 0, f2 = 0, kol = 2; if(cnt[1] - A[i][1] == n / 2) f1 = 1; if(cnt[1] - A[i][1] < n / 2) f1 = 2; if(cnt[2] - A[i][2] == n / 2) f2 = 1; if(cnt[2] - A[i][2] < n / 2) f2 = 2; if(f1 == 0 && f2 == 0){ cout << 2 << "\n"; mp[vv]++; continue; } vector<int> v1, v2, v3, v4; v1 = {0, 0}; v2 = {1, 0}; v3 = {0, 1}; v4 = {1, 1}; if(f1 == 2) kol--; if(f2 == 2) kol--; if(mp[v1] > 0){ cout << kol << "\n"; mp[vv]++; continue; } if(kol == 0){ cout << kol << "\n"; mp[vv]++; continue; } if(kol == 2){ if(f1 == 1 && mp[v3] > 0){ if(f2 == 1) kol--; cout << kol << "\n"; mp[vv]++; continue; } if(f2 == 1 && mp[v2] > 0){ if(f1 == 1) kol--; cout << kol << "\n"; mp[vv]++; continue; } if(f1 == 1) kol--; if(f2 == 1) kol--; cout << kol << "\n"; mp[vv]++; continue; } // cout << i << " " << f1 << " " << f2 << "\n"; if(kol == 1){ if(f1 == 1){ if(mp[v3] > 0){ mp[vv]++; cout << kol << "\n"; continue; } cout << kol - 1 << "\n"; mp[vv]++; continue; } if(f2 == 1){ if(mp[v2] > 0){ mp[vv]++; cout << kol << "\n"; continue; } cout << kol - 1 << "\n"; mp[vv]++; continue; } } cout << kol << "\n"; continue; } for(int j = 1; j <= n; j++){ if(i == j) continue; int kol = 0; for(int ind = 1; ind <= m; ind++){ if(cnt[ind] - A[i][ind] - A[j][ind] >= n / 2) kol++; } mx = max(mx, kol); } cout << mx << "\n"; } }
#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...