| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 403851 | penguinhacker | Plahte (COCI17_plahte) | C++14 | 컴파일 에러 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ar array
#define debug(x) cerr << "[" << #x << "] = [" << x << "]\n"
template<class T> ostream& operator<< (ostream& out, vector<T> v) {
out << '[';
for (int i = 0; i < v.size(); ++i) {
if (i > 0) {
out << ", ";
}
out << v[i];
}
return out << ']';
}
template<class T> ostream& operator<< (ostream& out, set<T> v) {
return out << vector<T>(v.begin(), v.end());
}
template<class A, unsigned int sz> ostream& operator<< (ostream& out, ar<A, sz> a) {
out << '[';
for (int i = 0; i < sz; ++i) {
if (i > 0) out << ", ";
out << a[i];
}
return out << ']';
}
template<class A, class B> ostream& operator<< (ostream& out, pair<A, B> p) {
return out << '[' << p.first << ", " << p.second << ']';
}
template<class A, class B> ostream& operator<< (ostream& out, map<A, B> mp) {
return out << vector<pair<A, B>>(mp.begin(), mp.end());
}
// just build a tree on the rectanges, and then a simple dfs to push the colors down
// the question is how do we build the tree, and how do we find the topmost rectangle that each shot hits
// idea: sweepline
// specifics: put all active rectangles in a set and sweep
const int mxN=80000;
int n, m, y1[mxN], y2[mxN], p[mxN], ans[mxN];
ar<int, 2> ball[mxN];
vector<ar<int, 3>> e;
set<ar<int, 3>> s, s2;
vector<int> adj[mxN];
set<int> dp[mxN];
int check(int y) {
auto it=s.upper_bound({y});
if (it==s.begin())
return -1;
ar<int, 3> a=*(--it);
if (y<=a[1])
return a[2];
it=s2.lower_bound({y});
if (it==s.end())
return -1;
a=*it;
return y>=a[1]?a[2]:-1;
}
void dfs(int u) {
for (int v : adj[u]) {
dfs(v);
if (dp[v].size()>dp[u].size())
swap(dp[u], dp[v]);
for (const int& i : dp[v])
dp[u].insert(i);
set<int>().swap(dp[v]);
}
ans[u]=dp[u].size();
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for (int i=0; i<n; ++i) {
int a, b;
cin >> a >> y1[i] >> b >> y2[i];
e.push_back({a, 1, i});
e.push_back({b, 3, i});
}
for (int i=0; i<m; ++i) {
int x;
cin >> x >> ball[i][0] >> ball[i][1];
e.push_back({x, 2, i});
}
sort(e.begin(), e.end());
memset(p, -1, sizeof(p));
for (ar<int, 3> a : e) {
int i=a[2];
if (a[1]==1) {
int x=check(y1[i]);
if (x^-1) {
p[i]=x;
adj[p[i]].push_back(i);
}
s.insert({y1[i], y2[i], i});
s2.insert({y2[i], y1[i], i});
} else if (a[1]==2) {
//debug(ball[i]);
//debug(s);
int x=check(ball[i][0]);
//debug(x);
if (x^-1)
dp[x].insert(ball[i][1]);
} else {
s.erase({y1[i], y2[i], i});
s2.erase({y2[i], y1[i], i});
}
}
for (int i=0; i<n; ++i)
if (p[i]==-1)
dfs(i);
for (int i=0; i<n; ++i)
cout << ans[i] << "\n";
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
plahte.cpp:47:17: error: 'int y1 [80000]' redeclared as different kind of entity
47 | int n, m, y1[mxN], y2[mxN], p[mxN], ans[mxN];
| ^
In file included from /usr/include/features.h:461,
from /usr/include/x86_64-linux-gnu/c++/10/bits/os_defines.h:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/c++config.h:518,
from /usr/include/c++/10/cassert:43,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
from plahte.cpp:1:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:221:1: note: previous declaration 'double y1(double)'
221 | __MATHCALL (y1,, (_Mdouble_));
| ^~~~~~~~~~
plahte.cpp: In function 'int main()':
plahte.cpp:86:19: warning: pointer to a function used in arithmetic [-Wpointer-arith]
86 | cin >> a >> y1[i] >> b >> y2[i];
| ^
plahte.cpp:86:12: error: no match for 'operator>>' (operand types are 'std::basic_istream<char>::__istream_type' {aka 'std::basic_istream<char>'} and 'double(double) throw ()' {aka 'double(double)'})
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~~~~~ ^~ ~~~~~
| | |
| | double(double) throw () {aka double(double)}
| std::basic_istream<char>::__istream_type {aka std::basic_istream<char>}
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:120:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__istream_type& (*)(std::basic_istream<_CharT, _Traits>::__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
120 | operator>>(__istream_type& (*__pf)(__istream_type&))
| ^~~~~~~~
/usr/include/c++/10/istream:120:7: note: conversion of argument 1 would be ill-formed:
plahte.cpp:86:19: error: invalid conversion from 'double (*)(double) throw ()' {aka 'double (*)(double)'} to 'std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&)' {aka 'std::basic_istream<char>& (*)(std::basic_istream<char>&)'} [-fpermissive]
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~^
| |
| double (*)(double) throw () {aka double (*)(double)}
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:124:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__ios_type& (*)(std::basic_istream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::__ios_type = std::basic_ios<char>]' (near match)
124 | operator>>(__ios_type& (*__pf)(__ios_type&))
| ^~~~~~~~
/usr/include/c++/10/istream:124:7: note: conversion of argument 1 would be ill-formed:
plahte.cpp:86:19: error: invalid conversion from 'double (*)(double) throw ()' {aka 'double (*)(double)'} to 'std::basic_istream<char>::__ios_type& (*)(std::basic_istream<char>::__ios_type&)' {aka 'std::basic_ios<char>& (*)(std::basic_ios<char>&)'} [-fpermissive]
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~^
| |
| double (*)(double) throw () {aka double (*)(double)}
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:131:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base& (*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
131 | operator>>(ios_base& (*__pf)(ios_base&))
| ^~~~~~~~
/usr/include/c++/10/istream:131:7: note: conversion of argument 1 would be ill-formed:
plahte.cpp:86:19: error: invalid conversion from 'double (*)(double) throw ()' {aka 'double (*)(double)'} to 'std::ios_base& (*)(std::ios_base&)' [-fpermissive]
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~^
| |
| double (*)(double) throw () {aka double (*)(double)}
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:168:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
168 | operator>>(bool& __n)
| ^~~~~~~~
/usr/include/c++/10/istream:168:7: note: conversion of argument 1 would be ill-formed:
plahte.cpp:86:19: error: cannot bind non-const lvalue reference of type 'bool&' to an rvalue of type 'bool'
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~^
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:172:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
172 | operator>>(short& __n);
| ^~~~~~~~
/usr/include/c++/10/istream:172:7: note: conversion of argument 1 would be ill-formed:
plahte.cpp:86:19: error: invalid conversion from 'double (*)(double) throw ()' {aka 'double (*)(double)'} to 'short int' [-fpermissive]
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~^
| |
| double (*)(double) throw () {aka double (*)(double)}
plahte.cpp:86:19: error: cannot bind rvalue '(short int)(y1 + ((sizetype)i))' to 'short int&'
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:175:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
175 | operator>>(unsigned short& __n)
| ^~~~~~~~
/usr/include/c++/10/istream:175:7: note: conversion of argument 1 would be ill-formed:
plahte.cpp:86:19: error: invalid conversion from 'double (*)(double) throw ()' {aka 'double (*)(double)'} to 'short unsigned int' [-fpermissive]
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~^
| |
| double (*)(double) throw () {aka double (*)(double)}
plahte.cpp:86:19: error: cannot bind rvalue '(short unsigned int)(y1 + ((sizetype)i))' to 'short unsigned int&'
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:179:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]' (near match)
179 | operator>>(int& __n);
| ^~~~~~~~
/usr/include/c++/10/istream:179:7: note: conversion of argument 1 would be ill-formed:
plahte.cpp:86:19: error: invalid conversion from 'double (*)(double) throw ()' {aka 'double (*)(double)'} to 'int' [-fpermissive]
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~^
| |
| double (*)(double) throw () {aka double (*)(double)}
plahte.cpp:86:19: error: cannot bind rvalue '(int)(y1 + ((sizetype)i))' to 'int&'
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:182:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
182 | operator>>(unsigned int& __n)
| ^~~~~~~~
/usr/include/c++/10/istream:182:7: note: conversion of argument 1 would be ill-formed:
plahte.cpp:86:19: error: invalid conversion from 'double (*)(double) throw ()' {aka 'double (*)(double)'} to 'unsigned int' [-fpermissive]
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~^
| |
| double (*)(double) throw () {aka double (*)(double)}
plahte.cpp:86:19: error: cannot bind rvalue '(unsigned int)(y1 + ((sizetype)i))' to 'unsigned int&'
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:186:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
186 | operator>>(long& __n)
| ^~~~~~~~
/usr/include/c++/10/istream:186:7: note: conversion of argument 1 would be ill-formed:
plahte.cpp:86:19: error: invalid conversion from 'double (*)(double) throw ()' {aka 'double (*)(double)'} to 'long int' [-fpermissive]
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~^
| |
| double (*)(double) throw () {aka double (*)(double)}
plahte.cpp:86:19: error: cannot bind rvalue '(long int)(y1 + ((sizetype)i))' to 'long int&'
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:190:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
190 | operator>>(unsigned long& __n)
| ^~~~~~~~
/usr/include/c++/10/istream:190:7: note: conversion of argument 1 would be ill-formed:
plahte.cpp:86:19: error: invalid conversion from 'double (*)(double) throw ()' {aka 'double (*)(double)'} to 'long unsigned int' [-fpermissive]
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~^
| |
| double (*)(double) throw () {aka double (*)(double)}
plahte.cpp:86:19: error: cannot bind rvalue '(long unsigned int)(y1 + ((sizetype)i))' to 'long unsigned int&'
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:195:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
195 | operator>>(long long& __n)
| ^~~~~~~~
/usr/include/c++/10/istream:195:7: note: conversion of argument 1 would be ill-formed:
plahte.cpp:86:19: error: invalid conversion from 'double (*)(double) throw ()' {aka 'double (*)(double)'} to 'long long int' [-fpermissive]
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~^
| |
| double (*)(double) throw () {aka double (*)(double)}
plahte.cpp:86:19: error: cannot bind rvalue '(long long int)(y1 + ((sizetype)i))' to 'long long int&'
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:199:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
199 | operator>>(unsigned long long& __n)
| ^~~~~~~~
/usr/include/c++/10/istream:199:7: note: conversion of argument 1 would be ill-formed:
plahte.cpp:86:19: error: invalid conversion from 'double (*)(double) throw ()' {aka 'double (*)(double)'} to 'long long unsigned int' [-fpermissive]
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~^
| |
| double (*)(double) throw () {aka double (*)(double)}
plahte.cpp:86:19: error: cannot bind rvalue '(long long unsigned int)(y1 + ((sizetype)i))' to 'long long unsigned int&'
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:235:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]' (near match)
235 | operator>>(void*& __p)
| ^~~~~~~~
/usr/include/c++/10/istream:235:7: note: conversion of argument 1 would be ill-formed:
plahte.cpp:86:19: error: invalid conversion from 'double (*)(double) throw ()' {aka 'double (*)(double)'} to 'void*' [-fpermissive]
86 | cin >> a >> y1[i] >> b >> y2[i];
| ~~~~^
| |
| double (*)(double) throw () {aka double (*)(double)}
plahte.cpp:86:19: error: cannot bind rvalue '(void*)(y1 + ((sizetype)i))' to 'void*&'
In file included from /usr/include/c++/10/sstream:38,
from /usr/include/c++/10/complex:45,
from /usr/include/c++/10/ccomplex:39,
from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
from plahte.cpp:1:
/usr/include/c++/10/istream:214:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]'
214 | operator>>(float& __f)
| ^~~~~~~~
/usr/include/c++/10/istream:214:25: note: no known conversion for argument 1 from 'double(double) throw ()' {aka 'double(double)'} to 'float&'
214 | operator>>(float& __f)
| ~~~~~~~^~~
/usr/include/c++/10/istream:218:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]'
218 | operator>>(double& __f)
| ^~~~~~~~
/usr/include/c++/10/istream:218:26: note: no known conversion for argument 1 from 'double(double) throw ()' {aka 'double(double)'} to 'double&'
218 | operator>>(double& __f)
| ~~~~~~~~^~~
/usr/include/c++/10/istream:222:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>]'
222 | operator>>(long double& __f)
| ^~~~~~~~
/usr/include/c++/10/istream:222:31: note: no known conversion for argument 1 from 'double(double) throw ()' {aka 'double(double)'} to 'long double&'
222 | operator>>(long double& __f)
| ~~~~~~~~~~~~~^~~
/usr/include/c++/10/istream:259:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(std::basic_istream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>]'
259 | operator>>(__strea