답안 #1083564

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1083564 2024-09-03T13:34:55 Z serifefedartar Matching (COCI20_matching) C++17
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
using namespace std;
 
#define fast ios::sync_with_stdio(0);cin.tie(0)
typedef long long ll;
#define f first
#define s second
#define LOGN 21
const ll MOD = 1e9 + 7;
const ll MAXN = 1e5 + 100;
 
#define int long long
int x[MAXN], y[MAXN];

set<pair<int,int>> active;
vector<pair<int,int>> ans, P[MAXN];
void check() {
    for (int i = 1; i < MAXN; i++) {
        if (P[i].size() == 2) {
            int x1 = P[i][0].f, x2 = P[i][1].f;
            auto u = active.lower_bound({x1, 0});
            auto v = active.lower_bound({x2, 1e9});
 
            if (u == v)
                ans.push_back({P[i][0].s, P[i][1].s});
            else {
 
                auto P1 = active.lower_bound({x1, 0});
                auto P2 = active.lower_bound({x2, 0});
                if (P1 != active.end() && (*P1).f == x1) {
                    ans.push_back({P[i][0].s, (*P1).s});
                    active.erase(P1);
                } else
                    active.insert({x1, P[i][0].s});
 
                if (P2 != active.end() && (*P2).f == x2) {
                    ans.push_back({P[i][1].s, (*P2).s});
                    active.erase(P2);
                } else
                    active.insert({x2, P[i][1].s});
 
            }
 
        } else if (P[i].size() == 1) {
            int x1 = P[i][0].f;
            auto P1 = active.lower_bound({x1, 0});
 
            if (P1 != active.end() && (*P1).f == x1) {
                ans.push_back({P[i][0].s, (*P1).s});
                active.erase(P1);
            } else
                active.insert({x1, P[i][0].s});
 
        }
    }

    if (active.size())
        return ;    
    
    cout << "DA\n";
    for (auto u : ans)
        cout << u.f << " " << u.s << "\n";
    exit(0);
}
 
signed main() {
    fast;
    int N, x, y;
    cin >> N;
 
    for (int i = 0; i < N; i++) {
        cin >> x[i] >> y[i];
        P[x[i]].push_back({y[i], i+1});
    }
    
    check();
    active.clear();
    ans.clear();
    for (int i = 0; i < MAXN; i++)
        P[i].clear();
    for (int i = 0; i < N; i++)
        P[y[i]].push_back({x[i], i+1});
    check();
 
    cout << "NE\n";
}

Compilation message

matching.cpp: In function 'int main()':
matching.cpp:72:17: error: invalid types 'long long int[long long int]' for array subscript
   72 |         cin >> x[i] >> y[i];
      |                 ^
matching.cpp:72:25: error: invalid types 'long long int[long long int]' for array subscript
   72 |         cin >> x[i] >> y[i];
      |                         ^
matching.cpp:73:12: error: invalid types 'long long int[long long int]' for array subscript
   73 |         P[x[i]].push_back({y[i], i+1});
      |            ^
matching.cpp:73:29: error: invalid types 'long long int[long long int]' for array subscript
   73 |         P[x[i]].push_back({y[i], i+1});
      |                             ^
matching.cpp:82:12: error: invalid types 'long long int[long long int]' for array subscript
   82 |         P[y[i]].push_back({x[i], i+1});
      |            ^
matching.cpp:82:29: error: invalid types 'long long int[long long int]' for array subscript
   82 |         P[y[i]].push_back({x[i], i+1});
      |                             ^