제출 #838052

#제출 시각아이디문제언어결과실행 시간메모리
838052penguinmanVision Program (IOI19_vision)C++17
100 / 100
11 ms1884 KiB
#include "vision.h" #include <bits/stdc++.h> #ifndef EVAL #include "grader.cpp" #endif using std::cin; using std::cout; using std::vector; using std::string; using ll = int; using vi = vector<ll>; using vii = vector<vi>; using pii = std::pair<ll,ll>; #define rep(i,j,k) for(ll i=ll(j); i<ll(k); i++) #define REP(i,j,k) for(ll i=ll(j); i<=ll(k); i++) #define per(i,j,k) for(ll i=ll(j); i>=ll(k); i--) #define ln "\n" #define pb emplace_back #define mp std::make_pair #define mtp std::make_tuple #define all(a) a.begin(),a.end() void construct_network(int H, int W, int K) { vii plus(H+W-1), minus(H+W-1); rep(i,0,H){ rep(j,0,W){ ll idx = i*W+j; plus[i+j].pb(idx); minus[i-j+W-1].pb(idx); } } vi plus_or(H+W-1), minus_or(H+W-1); rep(i,0,H+W-1){ plus_or[i] = add_or(plus[i]); minus_or[i] = add_or(minus[i]); } vi plus_val, minus_val; rep(i,0,H+W-1){ if(i+K >= plus_or.size()) continue; plus_val.pb(add_and({plus_or[i], plus_or[i+K]})); minus_val.pb(add_and({minus_or[i], minus_or[i+K]})); } ll plus_check1 = add_or(plus_val); ll minus_check1 = add_or(minus_val); { ll modify = add_xor(plus_or); modify = add_not(modify); rep(i,0,H+W-1) plus_or[i] = add_and({plus_or[i], modify}); } { ll modify = add_xor(minus_or); modify = add_not(modify); rep(i,0,H+W-1) minus_or[i] = add_and({minus_or[i], modify}); } rep(i,1,H+W-1){ plus_or[i] = add_xor({plus_or[i-1], plus_or[i]}); minus_or[i] = add_xor({minus_or[i-1], minus_or[i]}); } plus_val.clear(); minus_val.clear(); rep(i,0,H+W-1){ if(i+K >= plus_or.size()) continue; plus_val.pb(add_and({plus_or[i], plus_or[i+K]})); minus_val.pb(add_and({minus_or[i], minus_or[i+K]})); } ll plus_check2 = add_or(plus_val); ll minus_check2 = add_or(minus_val); plus_check2 = add_not(plus_check2); minus_check2 = add_not(minus_check2); ll final_check1 = add_and({plus_check1, minus_check2}); ll final_check2 = add_and({plus_check2, minus_check1}); ll ans = add_or({final_check1, final_check2}); return; }

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

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:44:10: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |   if(i+K >= plus_or.size()) continue;
      |      ~~~~^~~~~~~~~~~~~~~~~
vision.cpp:67:10: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |   if(i+K >= plus_or.size()) continue;
      |      ~~~~^~~~~~~~~~~~~~~~~
vision.cpp:77:5: warning: unused variable 'ans' [-Wunused-variable]
   77 |  ll ans = add_or({final_check1, final_check2});
      |     ^~~
#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...