結果
| 問題 |
No.5002 stick xor
|
| コンテスト | |
| ユーザー |
SugarDragon5
|
| 提出日時 | 2018-05-28 19:13:29 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 164 ms / 1,000 ms |
| コード長 | 4,472 bytes |
| コンパイル時間 | 7,730 ms |
| 実行使用メモリ | 1,524 KB |
| スコア | 35,925 |
| 最終ジャッジ日時 | 2018-05-28 19:13:39 |
|
ジャッジサーバーID (参考情報) |
judge9 / |
| 純コード判定しない問題か言語 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 32 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define FOR(i,n,m) for(ll i=(n);i<(m);i++)
#define REP(i,n) FOR(i,0,n)
#define REPR(i,n) for(ll i=(n);i>=0;i--)
#define all(vec) vec.begin(),vec.end()
using vi=vector<int>;
using vvi=vector<vi>;
using vl=vector<ll>;
using vvl=vector<vl>;
using P=pair<int,int>;
using PP=pair<ll,P>;
using vp=vector<P>;
using vpp=vector<PP>;
using vs=vector<string>;
#define fi first
#define se second
#define pb push_back
template<class T>bool chmax(T &a,const T &b){if(a<b){a=b;return true;}return false;}
template<class T>bool chmin(T &a,const T &b){if(a>b){a=b;return true;}return false;}
const ll MOD=1000000007LL;
const int INF=1<<30;
const ll LINF=1LL<<60;
int main(){
int n,k;
cin>>n>>k;
vi d(k);
REP(i,k){
cin>>d[i];
}
vs vec(n);
REP(i,n){
cin>>vec[i];
}
REP(i,k){
if(i<250){
int mi=INF;
P p(0,0);
bool f=false;
REP(j,n){
REP(k,n-d[i]){
int q=0;
REP(l,d[i]){
if(vec[j][k+l]=='1'){
q++;
}else{
q--;
}
}
if(q<mi){
mi=q;
p=P(j,k);
f=false;
}
}
}
REP(j,n-d[i]){
REP(k,n){
int q=0;
REP(l,d[i]){
if(vec[j+l][k]=='1'){
q++;
}else{
q--;
}
}
if(q<mi){
mi=q;
p=P(j,k);
f=true;
}
}
}
if(!f){
REP(l,d[i]){
if(vec[p.fi][p.se+l]=='1'){
vec[p.fi][p.se+l]='0';
}else{
vec[p.fi][p.se+l]='1';
}
}
cout<<p.fi+1<<" "<<p.se+1<<" "<<p.fi+1<<" "<<p.se+d[i]<<endl;
}else{
REP(l,d[i]){
if(vec[p.fi+l][p.se]=='1'){
vec[p.fi+l][p.se]='0';
}else{
vec[p.fi+l][p.se]='1';
}
}
cout<<p.fi+1<<" "<<p.se+1<<" "<<p.fi+d[i]<<" "<<p.se+1<<endl;
}
}else{
int ma=-INF;
P p(0,0);
bool f=false;
REP(j,n){
REP(k,n-d[i]){
int q=0;
REP(l,d[i]){
if(vec[j][k+l]=='1'){
q++;
}else{
q--;
}
}
if(q>ma){
ma=q;
p=P(j,k);
f=false;
}
}
}
REP(j,n-d[i]){
REP(k,n){
int q=0;
REP(l,d[i]){
if(vec[j+l][k]=='1'){
q++;
}else{
q--;
}
}
if(q>ma){
ma=q;
p=P(j,k);
f=true;
}
}
}
if(!f){
REP(l,d[i]){
if(vec[p.fi][p.se+l]=='1'){
vec[p.fi][p.se+l]='0';
}else{
vec[p.fi][p.se+l]='1';
}
}
cout<<p.fi+1<<" "<<p.se+1<<" "<<p.fi+1<<" "<<p.se+d[i]<<endl;
}else{
REP(l,d[i]){
if(vec[p.fi+l][p.se]=='1'){
vec[p.fi+l][p.se]='0';
}else{
vec[p.fi+l][p.se]='1';
}
}
cout<<p.fi+1<<" "<<p.se+1<<" "<<p.fi+d[i]<<" "<<p.se+1<<endl;
}
}
}
return 0;
}
SugarDragon5