제출 #91772

#제출 시각아이디문제언어결과실행 시간메모리
91772Retro3014자리 배치 (IOI18_seats)C++17
컴파일 에러
0 ms0 KiB
#include "seats.h"
#include <vector>
#include <algorithm>
#include <iostream>
#include <deque>
#include <unordered_map>

using namespace std;
#define MAX_N 1000000
#define INF 1000000000
typedef long long ll;

struct S{
    int x, y;
};
int h, w, N;
struct T{
    int lazy;
    int ans, mini;
    int s, e;
    int l, r;
};

vector<T> seg(1);
vector<S> v;
vector<int> r;

vector<S> s, e;
int ans;
vector<vector<int>> arr;

int tp=1;

void init(int x){
    if(seg[x].s!=seg[x].e){
        if(seg[x].l==-1){
            seg[x].l=tp;
            seg[tp]={0, (seg[x].s+seg[x].e)/2-seg[x].s+1, 0, seg[x].s, (seg[x].s+seg[x].e)/2, -1, -1};
            tp++;
            init(tp-1);
        }
        if(seg[x].r==-1){
            seg[x].r=tp;
            seg[tp]={0, seg[x].e-(seg[x].s+seg[x].e)/2, 0, (seg[x].s+seg[x].e)/2+1, seg[x].e, -1, -1};
            tp++;
            init(tp-1);
        }
    }
}

void update1(int idx){
    if(idx==-1) return;
    if(seg[idx].lazy!=0){
        if(seg[idx].l!=-1){
            seg[seg[idx].l].lazy += seg[idx].lazy;
            seg[seg[idx].l].mini += seg[idx].lazy;
        }
        if(seg[idx].r!=-1){
            seg[seg[idx].r].lazy += seg[idx].lazy;
            seg[seg[idx].r].mini += seg[idx].lazy;
        }
        seg[idx].lazy = 0;
    }
}

void update2(int idx){
    if(idx==-1) return;
    if(seg[idx].l==-1 && seg[idx].r==-1)    return;
    if(seg[idx].l==-1){
        seg[idx].ans = seg[seg[idx].r].ans;
        seg[idx].mini = seg[seg[idx].r].mini;
        return;
    }
    if(seg[idx].r==-1){
        seg[idx].ans = seg[seg[idx].l].ans;
        seg[idx].mini = seg[seg[idx].l].mini;
        return;
    }
    if(seg[seg[idx].r].mini<seg[seg[idx].l].mini){
        seg[idx].ans = seg[seg[idx].r].ans;
        seg[idx].mini = seg[seg[idx].r].mini;
        return;
    }
    if(seg[seg[idx].r].mini>seg[seg[idx].l].mini){
        seg[idx].ans = seg[seg[idx].l].ans;
        seg[idx].mini = seg[seg[idx].l].mini;
        return;
    }
    seg[idx].ans = seg[seg[idx].l].ans + seg[seg[idx].r].ans;
    seg[idx].mini = seg[seg[idx].l].mini;
}

void lazy_u(int idx, int x, int y, int z){
    if(idx==-1) return;
    if(seg[idx].lazy!=0){
        if(seg[idx].l!=-1){
            seg[seg[idx].l].lazy += seg[idx].lazy;
            seg[seg[idx].l].mini += seg[idx].lazy;
        }
        if(seg[idx].r!=-1){
            seg[seg[idx].r].lazy += seg[idx].lazy;
            seg[seg[idx].r].mini += seg[idx].lazy;
        }
        seg[idx].lazy = 0;
    }
    if(seg[idx].s>=x && seg[idx].e<=y){
        seg[idx].mini+=z;
        seg[idx].lazy+=z;   return;
    }
    if(seg[idx].e<x || seg[idx].s>y)    return;
    lazy_u(seg[idx].l, x, y, z);
    lazy_u(seg[idx].r, x, y, z);
    if(seg[idx].l==-1 && seg[idx].r==-1)    return;
    if(seg[idx].l==-1){
        seg[idx].ans = seg[seg[idx].r].ans;
        seg[idx].mini = seg[seg[idx].r].mini;
        return;
    }
    if(seg[idx].r==-1){
        seg[idx].ans = seg[seg[idx].l].ans;
        seg[idx].mini = seg[seg[idx].l].mini;
        return;
    }
    if(seg[seg[idx].r].mini<seg[seg[idx].l].mini){
        seg[idx].ans = seg[seg[idx].r].ans;
        seg[idx].mini = seg[seg[idx].r].mini;
        return;
    }
    if(seg[seg[idx].r].mini>seg[seg[idx].l].mini){
        seg[idx].ans = seg[seg[idx].l].ans;
        seg[idx].mini = seg[seg[idx].l].mini;
        return;
    }
    seg[idx].ans = seg[seg[idx].l].ans + seg[seg[idx].r].ans;
    seg[idx].mini = seg[seg[idx].l].mini;
}

vector<int> sq;
int dx[4]={-1, -1, 0, 0}, dy[4]={0, -1, 0, -1};
struct bypass{
    size_t operator() (int v) const{
        return (size_t) v;
    }
};
unordered_map<int, int, bypass> mp;

void give_initial_chart(int H, int W, vector<int> R, vector<int> C) {
    seg[0]={0, H*W, 0, 0, H*W-1, -1, -1};
    seg.resize(2*H*W);
    init(0);
    N=H*W;
    h=H; w=W;
    arr.resize(H);
    for(int i=0; i<H; i++){
        arr[i].resize(W);
    }
    for(int i=0; i<R.size(); i++){
        v.push_back({R[i], C[i]});
        arr[R[i]][C[i]]=i;
    }
    for(int i=0; i<=H; i++){
        for(int j=0; j<=W; j++){
            while(!sq.empty())  sq.pop_back();
            for(int k=0; k<4; k++){
                if(i+dx[k]>=0 && i+dx[k]<H && j+dy[k]>=0 && j+dy[k]<W){
                    sq.push_back(arr[i+dx[k]][j+dy[k]]);
                }
            }
            sort(sq.begin(), sq.end());
            for(int k=0; k<sq.size(); k++){
                if(k==0 || k==2){
                    //lazy_u(0, sq[k], N, 1);
                    mp[sq[k]]++;
                }else{
                    mp[sq[k]]--;
                    //lazy_u(0, sq[k], N, -1);
                }
            }
        }
    }
    for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
        if(it->second!=0)   lazy_u(0, it->first, N, it->second);
    }
    mp.clear();
}


int swap_seats(int a, int b) {
    for(int i=v[a].x; i<=v[a].x+1; i++){
        for(int j=v[a].y; j<=v[a].y+1; j++){
            while(!sq.empty())  sq.pop_back();
            for(int k=0; k<4; k++){
                if(i+dx[k]>=0 && i+dx[k]<h && j+dy[k]>=0 && j+dy[k]<w){
                    sq.push_back(arr[i+dx[k]][j+dy[k]]);
                }
            }
            sort(sq.begin(), sq.end());
            for(int k=0; k<sq.size(); k++){
                if(k==0 || k==2){
                    mp[sq[k]]-=1;
                }else{
                    mp[sq[k]]+=1;
                }
            }
        }
    }
    for(int i=v[b].x; i<=v[b].x+1; i++){
        for(int j=v[b].y; j<=v[b].y+1; j++){
            while(!sq.empty())  sq.pop_back();
            for(int k=0; k<4; k++){
                if(i+dx[k]>=0 && i+dx[k]<h && j+dy[k]>=0 && j+dy[k]<w){
                    sq.push_back(arr[i+dx[k]][j+dy[k]]);
                }
            }
            sort(sq.begin(), sq.end());
            for(int k=0; k<sq.size(); k++){
                if(k==0 || k==2){
                    mp[sq[k]]-=1;
                    //lazy_u(0, sq[k], N, -1);
                }else{
                    mp[sq[k]]+=1;
                    //lazy_u(0, sq[k], N, 1);
                }
            }
        }
    }
    S tmp = v[a]; v[a] = v[b]; v[b] = tmp;
    arr[v[a].x][v[a].y]=a;  arr[v[b].x][v[b].y]=b;
    for(int i=v[a].x; i<=v[a].x+1; i++){
        for(int j=v[a].y; j<=v[a].y+1; j++){
            while(!sq.empty())  sq.pop_back();
            for(int k=0; k<4; k++){
                if(i+dx[k]>=0 && i+dx[k]<h && j+dy[k]>=0 && j+dy[k]<w){
                    sq.push_back(arr[i+dx[k]][j+dy[k]]);
                }
            }
            sort(sq.begin(), sq.end());
            for(int k=0; k<sq.size(); k++){
                if(k==0 || k==2){
                    mp[sq[k]]+=1;
                    //lazy_u(0, sq[k], N, 1);
                }else{
                    mp[sq[k]]-=1;
                    //lazy_u(0, sq[k], N, -1);
                }
            }
        }
    }
    for(int i=v[b].x; i<=v[b].x+1; i++){
        for(int j=v[b].y; j<=v[b].y+1; j++){
            while(!sq.empty())  sq.pop_back();
            for(int k=0; k<4; k++){
                if(i+dx[k]>=0 && i+dx[k]<h && j+dy[k]>=0 && j+dy[k]<w){
                    sq.push_back(arr[i+dx[k]][j+dy[k]]);
                }
            }
            sort(sq.begin(), sq.end());
            for(int k=0; k<sq.size(); k++){
                if(k==0 || k==2){
                    mp[sq[k]]+=1;
                    //lazy_u(0, sq[k], N, 1);
                }else{
                    mp[sq[k]]-=1;
                    //lazy_u(0, sq[k], N, -1);
                }
            }
        }
    }
    for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
        if(it->second !=0)  lazy_u(0, it->first, N, it->second);
    }
    mp.clear();
    return seg[0].ans;
}

컴파일 시 표준 에러 (stderr) 메시지

seats.cpp: In function 'void give_initial_chart(int, int, std::vector<int>, std::vector<int>)':
seats.cpp:157:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0; i<R.size(); i++){
                  ~^~~~~~~~~
seats.cpp:170:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(int k=0; k<sq.size(); k++){
                          ~^~~~~~~~~~
seats.cpp:181:56: error: conversion from 'std::unordered_map<int, int, bypass>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, true>}' to non-scalar type 'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' requested
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                ~~~~~~~~^~
seats.cpp:181:62: error: no match for 'operator!=' (operand types are 'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' and 'std::unordered_map<int, int, bypass>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, true>}')
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                            ~~^~~~~~~~~~
In file included from /usr/include/c++/7/bits/stl_algobase.h:64:0,
                 from /usr/include/c++/7/vector:60,
                 from seats.h:3,
                 from seats.cpp:1:
/usr/include/c++/7/bits/stl_pair.h:456:5: note: candidate: template<class _T1, class _T2> constexpr bool std::operator!=(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)
     operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
     ^~~~~~~~
/usr/include/c++/7/bits/stl_pair.h:456:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' is not derived from 'const std::pair<_T1, _T2>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/7/vector:60,
                 from seats.h:3,
                 from seats.cpp:1:
/usr/include/c++/7/bits/stl_iterator.h:311:5: note: candidate: template<class _Iterator> constexpr bool std::operator!=(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)
     operator!=(const reverse_iterator<_Iterator>& __x,
     ^~~~~~~~
/usr/include/c++/7/bits/stl_iterator.h:311:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' is not derived from 'const std::reverse_iterator<_Iterator>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/7/vector:60,
                 from seats.h:3,
                 from seats.cpp:1:
/usr/include/c++/7/bits/stl_iterator.h:349:5: note: candidate: template<class _IteratorL, class _IteratorR> constexpr bool std::operator!=(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)
     operator!=(const reverse_iterator<_IteratorL>& __x,
     ^~~~~~~~
/usr/include/c++/7/bits/stl_iterator.h:349:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' is not derived from 'const std::reverse_iterator<_Iterator>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/7/vector:60,
                 from seats.h:3,
                 from seats.cpp:1:
/usr/include/c++/7/bits/stl_iterator.h:1130:5: note: candidate: template<class _IteratorL, class _IteratorR> constexpr bool std::operator!=(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&)
     operator!=(const move_iterator<_IteratorL>& __x,
     ^~~~~~~~
/usr/include/c++/7/bits/stl_iterator.h:1130:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' is not derived from 'const std::move_iterator<_IteratorL>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/bits/stl_algobase.h:67:0,
                 from /usr/include/c++/7/vector:60,
                 from seats.h:3,
                 from seats.cpp:1:
/usr/include/c++/7/bits/stl_iterator.h:1136:5: note: candidate: template<class _Iterator> constexpr bool std::operator!=(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorL>&)
     operator!=(const move_iterator<_Iterator>& __x,
     ^~~~~~~~
/usr/include/c++/7/bits/stl_iterator.h:1136:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' is not derived from 'const std::move_iterator<_IteratorL>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/vector:61:0,
                 from seats.h:3,
                 from seats.cpp:1:
/usr/include/c++/7/bits/allocator.h:158:5: note: candidate: template<class _T1, class _T2> bool std::operator!=(const std::allocator<_Tp1>&, const std::allocator<_T2>&)
     operator!=(const allocator<_T1>&, const allocator<_T2>&)
     ^~~~~~~~
/usr/include/c++/7/bits/allocator.h:158:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' is not derived from 'const std::allocator<_Tp1>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/vector:61:0,
                 from seats.h:3,
                 from seats.cpp:1:
/usr/include/c++/7/bits/allocator.h:164:5: note: candidate: template<class _Tp> bool std::operator!=(const std::allocator<_Tp1>&, const std::allocator<_Tp1>&)
     operator!=(const allocator<_Tp>&, const allocator<_Tp>&)
     ^~~~~~~~
/usr/include/c++/7/bits/allocator.h:164:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' is not derived from 'const std::allocator<_Tp1>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/vector:64:0,
                 from seats.h:3,
                 from seats.cpp:1:
/usr/include/c++/7/bits/stl_vector.h:1620:5: note: candidate: template<class _Tp, class _Alloc> bool std::operator!=(const std::vector<_Tp, _Alloc>&, const std::vector<_Tp, _Alloc>&)
     operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
     ^~~~~~~~
/usr/include/c++/7/bits/stl_vector.h:1620:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' is not derived from 'const std::vector<_Tp, _Alloc>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/iosfwd:40:0,
                 from /usr/include/c++/7/ios:38,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from seats.cpp:4:
/usr/include/c++/7/bits/postypes.h:221:5: note: candidate: template<class _StateT> bool std::operator!=(const std::fpos<_StateT>&, const std::fpos<_StateT>&)
     operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
     ^~~~~~~~
/usr/include/c++/7/bits/postypes.h:221:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' is not derived from 'const std::fpos<_StateT>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/bits/basic_string.h:48:0,
                 from /usr/include/c++/7/string:52,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from seats.cpp:4:
/usr/include/c++/7/string_view:468:5: note: candidate: template<class _CharT, class _Traits> constexpr bool std::operator!=(std::basic_string_view<_CharT, _Traits>, std::basic_string_view<_CharT, _Traits>)
     operator!=(basic_string_view<_CharT, _Traits> __x,
     ^~~~~~~~
/usr/include/c++/7/string_view:468:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::__detail::_Node_iterator<std::pair<const int, int>, false, false>' is not derived from 'std::basic_string_view<_CharT, _Traits>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/bits/basic_string.h:48:0,
                 from /usr/include/c++/7/string:52,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from seats.cpp:4:
/usr/include/c++/7/string_view:474:5: note: candidate: template<class _CharT, class _Traits> constexpr bool std::operator!=(std::basic_string_view<_CharT, _Traits>, std::__detail::__idt<std::basic_string_view<_CharT, _Traits> >)
     operator!=(basic_string_view<_CharT, _Traits> __x,
     ^~~~~~~~
/usr/include/c++/7/string_view:474:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::__detail::_Node_iterator<std::pair<const int, int>, false, false>' is not derived from 'std::basic_string_view<_CharT, _Traits>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/bits/basic_string.h:48:0,
                 from /usr/include/c++/7/string:52,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from seats.cpp:4:
/usr/include/c++/7/string_view:480:5: note: candidate: template<class _CharT, class _Traits> constexpr bool std::operator!=(std::__detail::__idt<std::basic_string_view<_CharT, _Traits> >, std::basic_string_view<_CharT, _Traits>)
     operator!=(__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
     ^~~~~~~~
/usr/include/c++/7/string_view:480:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::__detail::_Node_iterator<std::pair<const int, int>, false, true>' is not derived from 'std::basic_string_view<_CharT, _Traits>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/string:52:0,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from seats.cpp:4:
/usr/include/c++/7/bits/basic_string.h:6044:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator!=(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&)
     operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
     ^~~~~~~~
/usr/include/c++/7/bits/basic_string.h:6044:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' is not derived from 'const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/string:52:0,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from seats.cpp:4:
/usr/include/c++/7/bits/basic_string.h:6057:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator!=(const _CharT*, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&)
     operator!=(const _CharT* __lhs,
     ^~~~~~~~
/usr/include/c++/7/bits/basic_string.h:6057:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   mismatched types 'const _CharT*' and 'std::__detail::_Node_iterator<std::pair<const int, int>, false, false>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/string:52:0,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from seats.cpp:4:
/usr/include/c++/7/bits/basic_string.h:6069:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> bool std::operator!=(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&, const _CharT*)
     operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
     ^~~~~~~~
/usr/include/c++/7/bits/basic_string.h:6069:5: note:   template argument deduction/substitution failed:
seats.cpp:181:71: note:   'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' is not derived from 'const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>'
     for(unordered_map<int, int>::iterator it = mp.begin(); it!=mp.end(); ++it){
                                                                       ^
In file included from /usr/include/c++/7/bits/ios_base.h:46:0,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from seats.cpp:4:
/usr/include/c++/7/system_error:319:3: note: candidate: bool std::operator!=(const std::error_code&, const std::error_code&)
   operator!=(const error_code& __lhs, const error_code& __rhs) noexcept
   ^~~~~~~~
/usr/include/c++/7/system_error:319:3: note:   no known conversion for argument 1 from 'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' to 'const std::error_code&'
/usr/include/c++/7/system_error:323:3: note: candidate: bool std::operator!=(const std::error_code&, const std::error_condition&)
   operator!=(const error_code& __lhs, const error_condition& __rhs) noexcept
   ^~~~~~~~
/usr/include/c++/7/system_error:323:3: note:   no known conversion for argument 1 from 'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' to 'const std::error_code&'
/usr/include/c++/7/system_error:327:3: note: candidate: bool std::operator!=(const std::error_condition&, const std::error_code&)
   operator!=(const error_condition& __lhs, const error_code& __rhs) noexcept
   ^~~~~~~~
/usr/include/c++/7/system_error:327:3: note:   no known conversion for argument 1 from 'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' to 'const std::error_condition&'
/usr/include/c++/7/system_error:331:3: note: candidate: bool std::operator!=(const std::error_condition&, const std::error_condition&)
   operator!=(const error_condition& __lhs,
   ^~~~~~~~
/usr/include/c++/7/system_error:331:3: note:   no known conversion for argument 1 from 'std::unordered_map<int, int>::iterator {aka std::__detail::_Node_iterator<std::pair<const int, int>, false, false>}' to 'const std::error_condition&'
In file included from /usr/include/c++/7/bits/locale_facets.h:48:0,
                 from /usr/include/c++/7/bits/basic_ios.h:37,
                 from /usr/include/c++/7/ios:44,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from seats.cpp:4:
/usr/include/c++/7/bits/streambuf_iterator.h:210:5: note: candidate: template<class _CharT, class _Traits