Submission #606211

#TimeUsernameProblemLanguageResultExecution timeMemory
606211rrrr10000Vision Program (IOI19_vision)C++14
100 / 100
11 ms1844 KiB
#include "vision.h"

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vi;
typedef vector<vi> vvi;
typedef pair<ll,ll> P;
typedef vector<P> vp;
#define rep(i,n) for(ll i=0;i<(ll)(n);i++)
#define REP(i,k,n) for(ll i=(ll)(k);i<(ll)(n);i++)
#define pb emplace_back

void construct_network(int H, int W, int K) {
	vector<vector<int>> al(2,vector<int>(2));
	rep(tt,2){
		vvi a(H+W-1);
		rep(i,H)rep(j,W){
			if(tt==0)a[i+j].pb(i*W+j);
			else a[i-j+W-1].pb(i*W+j);
		}
		vi b;
		rep(i,H+W-1){
			vector<int> ask;
			for(ll x:a[i])ask.pb(x);
			b.pb(add_or(ask));
		}
		vi rui(H+W-1);
		rui[0]=b[0];
		REP(i,1,H+W-1){
			vector<int> ask={rui[i-1],b[i]};
			rui[i]=add_or(ask);
		}
		vector<int> c,d;
		REP(i,K,H+W-1){
			vector<int> ask={rui[i-K],b[i]};
			c.pb(add_and(ask));
		}
		REP(i,K+1,H+W-1){
			vector<int> ask={rui[i-K-1],b[i]};
			d.pb(add_and(ask));
		}
		al[0][tt]=add_or(c);
		if(K<H+W-2)al[1][tt]=add_or(d);
	}
	if(K<H+W-2){
		int t=add_or(al[1]);
		t=add_not(t);
		int u=add_or(al[0]);
		vector<int> ask={t,u};
		add_and(ask);
	}
	else add_or(al[0]);
}

Compilation message (stderr)

vision.cpp: In function 'void construct_network(int, int, int)':
vision.cpp:31:34: warning: narrowing conversion of 'rui.std::vector<long long int>::operator[](((std::vector<long long int>::size_type)(i - 1)))' from '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} to 'int' [-Wnarrowing]
   31 |    vector<int> ask={rui[i-1],b[i]};
      |                                  ^
vision.cpp:31:34: warning: narrowing conversion of 'rui.std::vector<long long int>::operator[](((std::vector<long long int>::size_type)(i - 1)))' from '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} to 'int' [-Wnarrowing]
vision.cpp:31:34: warning: narrowing conversion of 'b.std::vector<long long int>::operator[](((std::vector<long long int>::size_type)i))' from '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} to 'int' [-Wnarrowing]
vision.cpp:31:34: warning: narrowing conversion of 'b.std::vector<long long int>::operator[](((std::vector<long long int>::size_type)i))' from '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} to 'int' [-Wnarrowing]
vision.cpp:36:34: warning: narrowing conversion of 'rui.std::vector<long long int>::operator[](((std::vector<long long int>::size_type)(i - ((ll)K))))' from '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} to 'int' [-Wnarrowing]
   36 |    vector<int> ask={rui[i-K],b[i]};
      |                                  ^
vision.cpp:36:34: warning: narrowing conversion of 'rui.std::vector<long long int>::operator[](((std::vector<long long int>::size_type)(i - ((ll)K))))' from '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} to 'int' [-Wnarrowing]
vision.cpp:36:34: warning: narrowing conversion of 'b.std::vector<long long int>::operator[](((std::vector<long long int>::size_type)i))' from '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} to 'int' [-Wnarrowing]
vision.cpp:36:34: warning: narrowing conversion of 'b.std::vector<long long int>::operator[](((std::vector<long long int>::size_type)i))' from '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} to 'int' [-Wnarrowing]
vision.cpp:40:36: warning: narrowing conversion of 'rui.std::vector<long long int>::operator[](((std::vector<long long int>::size_type)((i - ((ll)K)) - 1)))' from '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} to 'int' [-Wnarrowing]
   40 |    vector<int> ask={rui[i-K-1],b[i]};
      |                                    ^
vision.cpp:40:36: warning: narrowing conversion of 'rui.std::vector<long long int>::operator[](((std::vector<long long int>::size_type)((i - ((ll)K)) - 1)))' from '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} to 'int' [-Wnarrowing]
vision.cpp:40:36: warning: narrowing conversion of 'b.std::vector<long long int>::operator[](((std::vector<long long int>::size_type)i))' from '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} to 'int' [-Wnarrowing]
vision.cpp:40:36: warning: narrowing conversion of 'b.std::vector<long long int>::operator[](((std::vector<long long int>::size_type)i))' from '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka '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...