제출 #718928

#제출 시각아이디문제언어결과실행 시간메모리
718928Karuk도시들 (IOI15_towns)C++14
컴파일 에러
0 ms0 KiB
#include "towns.h"
#include<bits/stdc++.h>
using namespace std;
map<int,int>m;
long long getD(int x,int y) {
    if(m[{x,y}]!=0)return m[{x,y}];
    else m[{x,y}]=m[{y,x}]=getDistance(x,y);
    return m[{x,y}];
}
long long getmindist(int f,int s,int t) {
    long long d1=getD(f,s);
    long long d2=getD(s,t);
    long long d3=getD(f,t);
    long long dd=(d1+d2-d3)/2;
    long long d=(d1+d3-d2)/2;
    long long ddd=(d2+d3-d1)/2;
    return max(max(d,dd),ddd);
}
int hubDistance(int n,int sub) {
    int maxd=0,maxind=0;
    int md=0;
    for(int i=1;i<n;i++) {
        int p=getD(0,i);
        if(maxd<p) {
            maxd=p;
            maxind=i;
        }
    }
    md=maxind;
    maxd=0;
    maxind=0;
    for(int i=1;i<n;i++) {
        int p=getD(md,i);
        if(maxd<p) {
            maxd=p;
            maxind=i;
        }
    }
    long long minr=1e12;
    for(int i=0;i<n;i++) {
        if(i==md || i==maxind)continue;
        minr=min(minr,getmindist(i,md,maxind));
    }
    return minr;
}

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

towns.cpp: In function 'long long int getD(int, int)':
towns.cpp:6:9: error: no match for 'operator[]' (operand types are 'std::map<int, int>' and '<brace-enclosed initializer list>')
    6 |     if(m[{x,y}]!=0)return m[{x,y}];
      |         ^
In file included from /usr/include/c++/10/map:61,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:81,
                 from towns.cpp:2:
/usr/include/c++/10/bits/stl_map.h:492:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = int; _Tp = int; _Compare = std::less<int>; _Alloc = std::allocator<std::pair<const int, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = int]'
  492 |       operator[](const key_type& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:492:34: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const key_type&' {aka 'const int&'}
  492 |       operator[](const key_type& __k)
      |                  ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_map.h:512:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](std::map<_Key, _Tp, _Compare, _Alloc>::key_type&&) [with _Key = int; _Tp = int; _Compare = std::less<int>; _Alloc = std::allocator<std::pair<const int, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = int]'
  512 |       operator[](key_type&& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:512:29: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::map<int, int>::key_type&&' {aka 'int&&'}
  512 |       operator[](key_type&& __k)
      |                  ~~~~~~~~~~~^~~
towns.cpp:6:28: error: no match for 'operator[]' (operand types are 'std::map<int, int>' and '<brace-enclosed initializer list>')
    6 |     if(m[{x,y}]!=0)return m[{x,y}];
      |                            ^
In file included from /usr/include/c++/10/map:61,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:81,
                 from towns.cpp:2:
/usr/include/c++/10/bits/stl_map.h:492:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = int; _Tp = int; _Compare = std::less<int>; _Alloc = std::allocator<std::pair<const int, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = int]'
  492 |       operator[](const key_type& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:492:34: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const key_type&' {aka 'const int&'}
  492 |       operator[](const key_type& __k)
      |                  ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_map.h:512:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](std::map<_Key, _Tp, _Compare, _Alloc>::key_type&&) [with _Key = int; _Tp = int; _Compare = std::less<int>; _Alloc = std::allocator<std::pair<const int, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = int]'
  512 |       operator[](key_type&& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:512:29: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::map<int, int>::key_type&&' {aka 'int&&'}
  512 |       operator[](key_type&& __k)
      |                  ~~~~~~~~~~~^~~
towns.cpp:7:11: error: no match for 'operator[]' (operand types are 'std::map<int, int>' and '<brace-enclosed initializer list>')
    7 |     else m[{x,y}]=m[{y,x}]=getDistance(x,y);
      |           ^
In file included from /usr/include/c++/10/map:61,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:81,
                 from towns.cpp:2:
/usr/include/c++/10/bits/stl_map.h:492:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = int; _Tp = int; _Compare = std::less<int>; _Alloc = std::allocator<std::pair<const int, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = int]'
  492 |       operator[](const key_type& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:492:34: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const key_type&' {aka 'const int&'}
  492 |       operator[](const key_type& __k)
      |                  ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_map.h:512:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](std::map<_Key, _Tp, _Compare, _Alloc>::key_type&&) [with _Key = int; _Tp = int; _Compare = std::less<int>; _Alloc = std::allocator<std::pair<const int, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = int]'
  512 |       operator[](key_type&& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:512:29: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::map<int, int>::key_type&&' {aka 'int&&'}
  512 |       operator[](key_type&& __k)
      |                  ~~~~~~~~~~~^~~
towns.cpp:7:20: error: no match for 'operator[]' (operand types are 'std::map<int, int>' and '<brace-enclosed initializer list>')
    7 |     else m[{x,y}]=m[{y,x}]=getDistance(x,y);
      |                    ^
In file included from /usr/include/c++/10/map:61,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:81,
                 from towns.cpp:2:
/usr/include/c++/10/bits/stl_map.h:492:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = int; _Tp = int; _Compare = std::less<int>; _Alloc = std::allocator<std::pair<const int, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = int]'
  492 |       operator[](const key_type& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:492:34: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const key_type&' {aka 'const int&'}
  492 |       operator[](const key_type& __k)
      |                  ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_map.h:512:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](std::map<_Key, _Tp, _Compare, _Alloc>::key_type&&) [with _Key = int; _Tp = int; _Compare = std::less<int>; _Alloc = std::allocator<std::pair<const int, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = int]'
  512 |       operator[](key_type&& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:512:29: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::map<int, int>::key_type&&' {aka 'int&&'}
  512 |       operator[](key_type&& __k)
      |                  ~~~~~~~~~~~^~~
towns.cpp:8:13: error: no match for 'operator[]' (operand types are 'std::map<int, int>' and '<brace-enclosed initializer list>')
    8 |     return m[{x,y}];
      |             ^
In file included from /usr/include/c++/10/map:61,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:81,
                 from towns.cpp:2:
/usr/include/c++/10/bits/stl_map.h:492:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = int; _Tp = int; _Compare = std::less<int>; _Alloc = std::allocator<std::pair<const int, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = int]'
  492 |       operator[](const key_type& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:492:34: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const key_type&' {aka 'const int&'}
  492 |       operator[](const key_type& __k)
      |                  ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_map.h:512:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](std::map<_Key, _Tp, _Compare, _Alloc>::key_type&&) [with _Key = int; _Tp = int; _Compare = std::less<int>; _Alloc = std::allocator<std::pair<const int, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = int]'
  512 |       operator[](key_type&& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:512:29: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::map<int, int>::key_type&&' {aka 'int&&'}
  512 |       operator[](key_type&& __k)
      |                  ~~~~~~~~~~~^~~
towns.cpp: In function 'int hubDistance(int, int)':
towns.cpp:23:19: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   23 |         int p=getD(0,i);
      |               ~~~~^~~~~
towns.cpp:33:19: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   33 |         int p=getD(md,i);
      |               ~~~~^~~~~~
towns.cpp:44:12: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   44 |     return minr;
      |            ^~~~
towns.cpp:19:27: warning: unused parameter 'sub' [-Wunused-parameter]
   19 | int hubDistance(int n,int sub) {
      |                       ~~~~^~~