# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
354401 | 2021-01-21T22:11:21 Z | rqi | 질문 (CEOI14_question_grader) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pi; typedef vector<int> vi; typedef vector<pi> vpi; #define pb push_back #define f first #define s second #define mp make_pair #define ins insert #define sz(x) (int)(x).size() #define all(x) begin(x), end(x) const int maxh = 12; vector<vi> subs; vi sub; void genSub(int curnum = 1){ if(sz(sub) == maxh/2){ subs.pb(sub); // for(auto u: sub){ // cout << u << " "; // } // cout << "\n"; return; } for(int i = curnum; i <= maxh; i++){ sub.pb(i); genSub(i+1); sub.pop_back(); } } int num[1005][1005]; void helpA(){ int N, T; cin >> N >> T; for(int i = 1; i <= T; i++){ int x, y; cin >> x >> y; x--; y--; cout << num[x][y] << "\n"; } } bool pres[1005][maxh+1]; //is this number present in the row? void helpB(){ int N, T; cin >> N >> T; for(int i = 1; i <= T; i++){ int q, h; cin >> q >> h; q--; if(pres[q][h]){ cout << "yes" << "\n"; } else{ cout << "no" << "\n"; } } } int main(){ genSub(); for(int i = 0; i < sz(subs); i++){ for(int j = 0; j < sz(subs); j++){ if(i == j) continue; vector<bool> insub1(maxh+1, 0); vector<bool> insub2(maxh+1, 1); for(int k = 0; k < sz(subs[i]); k++){ insub1[subs[i][k]] = 1; } for(int k = 0; k < sz(subs[j]); k++){ insub2[subs[j][k]] = 0; } for(int h = 1; h <= maxh; h++){ if(insub1[h] && insub2[h]){ num[i][j] = h; } } } } // for(int i = 0; i < sz(subs); i++){ // for(int j = 0; j < sz(subs); j++){ // cout << num[i][j] << " "; // } // cout << "\n"; // } for(int i = 0; i < sz(subs); i++){ for(int j = 0; j < sz(subs); j++){ pres[i][num[i][j]] = 1; } } int typ; cin >> typ; if(typ == 1){ helpA(); } else{ helpB(); } }