제출 #1059143

#제출 시각아이디문제언어결과실행 시간메모리
1059143efishelVision Program (IOI19_vision)C++17
100 / 100
22 ms5472 KiB
#include "vision.h" #include <bits/stdc++.h> using namespace std; using ll = long long; using vll = vector <ll>; using vi = vector <int>; const ll MAXN = 500; vll wh1[MAXN], wh2[MAXN]; void construct_network (int h, int w, int k) { auto toLine = [&](ll i, ll j) { return 0 <= i && i < h && 0 <= j && j < w ? i*w+j : -16; }; if (k == h+w-2) { add_or({ add_and({ toLine(0, 0), toLine(h-1, w-1) }), add_and({ toLine(h-1, 0), toLine(0, w-1) }) }); return; } for (ll i = 0; i < h; i++) { for (ll j = 0; j < w; j++) { wh1[i+j].push_back(toLine(i, j)); wh2[j+h-1-i].push_back(toLine(i, j)); } } vi diag1, diag2; for (ll i = 0; i < h+w-1; i++) { diag1.push_back(add_or(vi(wh1[i].begin(), wh1[i].end()))); diag2.push_back(add_or(vi(wh2[i].begin(), wh2[i].end()))); } vi op1, op2; // or op1: dis in diag1 == k // or op2: dis in diag2 == k for (ll i = k; i < h+w-1; i++) { op1.push_back(add_and({ diag1[i-k], diag1[i] })); op2.push_back(add_and({ diag2[i-k], diag2[i] })); } vi bd1, bd2; // or bd1: dis in diag1 > k // or bd2: dis in diag2 > k for (ll i = k; i < h+w-1 - 1; i++) { ll p1 = i-k+1, p2 = i; bd1.push_back(add_and({ add_or(vi(diag1.begin(), diag1.begin()+p1-1+1)), add_or(vi(diag1.begin()+p2+1, diag1.end())) })); bd2.push_back(add_and({ add_or(vi(diag2.begin(), diag2.begin()+p1-1+1)), add_or(vi(diag2.begin()+p2+1, diag2.end())) })); } add_and({ add_not({ add_or(bd1) }), add_not({ add_or(bd2) }), add_or({ add_or(op1), add_or(op2) }) }); }

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

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:14:34: warning: narrowing conversion of 'toLine.construct_network(int, int, int)::<lambda(ll, ll)>(0, 0)' from 'long long int' to 'int' [-Wnarrowing]
   14 |         add_or({ add_and({ toLine(0, 0), toLine(h-1, w-1) }), add_and({ toLine(h-1, 0), toLine(0, w-1) }) });
      |                            ~~~~~~^~~~~~
vision.cpp:14:34: warning: narrowing conversion of 'toLine.construct_network(int, int, int)::<lambda(ll, ll)>(0, 0)' from 'long long int' to 'int' [-Wnarrowing]
vision.cpp:14:48: warning: narrowing conversion of 'toLine.construct_network(int, int, int)::<lambda(ll, ll)>(((ll)(h - 1)), ((ll)(w - 1)))' from 'long long int' to 'int' [-Wnarrowing]
   14 |         add_or({ add_and({ toLine(0, 0), toLine(h-1, w-1) }), add_and({ toLine(h-1, 0), toLine(0, w-1) }) });
      |                                          ~~~~~~^~~~~~~~~~
vision.cpp:14:48: warning: narrowing conversion of 'toLine.construct_network(int, int, int)::<lambda(ll, ll)>(((ll)(h - 1)), ((ll)(w - 1)))' from 'long long int' to 'int' [-Wnarrowing]
vision.cpp:14:79: warning: narrowing conversion of 'toLine.construct_network(int, int, int)::<lambda(ll, ll)>(((ll)(h - 1)), 0)' from 'long long int' to 'int' [-Wnarrowing]
   14 |         add_or({ add_and({ toLine(0, 0), toLine(h-1, w-1) }), add_and({ toLine(h-1, 0), toLine(0, w-1) }) });
      |                                                                         ~~~~~~^~~~~~~~
vision.cpp:14:79: warning: narrowing conversion of 'toLine.construct_network(int, int, int)::<lambda(ll, ll)>(((ll)(h - 1)), 0)' from 'long long int' to 'int' [-Wnarrowing]
vision.cpp:14:95: warning: narrowing conversion of 'toLine.construct_network(int, int, int)::<lambda(ll, ll)>(0, ((ll)(w - 1)))' from 'long long int' to 'int' [-Wnarrowing]
   14 |         add_or({ add_and({ toLine(0, 0), toLine(h-1, w-1) }), add_and({ toLine(h-1, 0), toLine(0, w-1) }) });
      |                                                                                         ~~~~~~^~~~~~~~
vision.cpp:14:95: warning: narrowing conversion of 'toLine.construct_network(int, int, int)::<lambda(ll, ll)>(0, ((ll)(w - 1)))' from 'long long int' to 'int' [-Wnarrowing]
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...