# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
755704 | Rafi22 | Vision Program (IOI19_vision) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
//#include "vision.h"
using namespace std;
#define endl '\n'
#define st first
#define nd second
#define pb push_back
#define sz(x) (int)(x).size()
#define all(x) (x).begin(), (x).end()
#define ll long long
ll mod=1000000007;
int inf=1000000007;
ll infl=1000000000000000007;
int it;
bool mem[100007];
const int N=207;
int orX[N];
int pX[N];
int orY[N];
int pY[N];
vector<int>add(vector<int>V,int k)
{
vector<int>res;
res.pb(add_xor({V[0],k}));
int w=add_and({V[0],k});
for(int i=1;i<=8;i++)
{
res.pb(add_xor({V[i],w}));
w=add_and({V[i],w});
}
return res;
}
void construct_network(int n,int m,int k)
{
it=n*m-1;
int N=add_not(0);
for(int i=0;i<n;i++)
{
vector<int>V;
for(int j=0;j<m;j++) V.pb(i*m+j);
orX[i]=add_xor(V);
}
//for(int i=0;i<n;i++) cout<<mem[orX[i]]<<" ";
// cout<<endl;
pX[0]=add_and({0,N});
for(int i=1;i<=n;i++) pX[i]=add_xor({pX[i-1],orX[i-1]});
for(int j=0;j<m;j++)
{
vector<int>V;
for(int i=0;i<n;i++) V.pb(i*m+j);
orY[j]=add_xor(V);
}
// for(int j=0;j<m;j++) cout<<mem[orY[j]]<<" ";
// cout<<endl;
pY[0]=add_and({0,N});
for(int j=1;j<=m;j++) pY[j]=add_xor({pY[j-1],orY[j-1]});
vector<int>ans;
for(int i=0;i<=8;i++) ans.pb(add_and({0,N}));
for(int i=1;i<=n;i++) ans=add(ans,pX[i]);
for(int j=1;j<=m;j++) ans=add(ans,pY[j]);
int Z=add_and({0,N});
int O=add_not(Z);
vector<int>wyn;
for(int i=0;i<=8;i++)
{
if(k&(1<<i)) wyn.pb(add_xor({Z,ans[i]}));
else wyn.pb(add_xor({O,ans[i]}));
}
add_and(wyn);
// cout<<mem[add_and(wyn)]<<endl;
}
/*
int main()
{
int n,m,k;
cin>>n>>m>>k;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>mem[i*m+j];
}
}
construct_network(n,m,k);
return 0;
}*/