Submission #1188820

#TimeUsernameProblemLanguageResultExecution timeMemory
1188820irmuunMars (APIO22_mars)C++17
14 / 100
12 ms3492 KiB
#include "mars.h"
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back
#define ff first
#define ss second
#define all(s) s.begin(),s.end()
#define rall(s) s.rbegin(),s.rend()

string process(vector<vector<string>> a, int I, int J, int k, int n){
	int id[2*n+1][2*n+1];
	int cur=0;
	for(int x=0;x<=2*n;x++){
		for(int y=0;y<=2*n;y++){
			id[x][y]=cur++;
		}
	}
	vector<int>dx={0,0,-1,1};
	vector<int>dy={-1,1,0,0};
	string s(100,'0');
	if(n<=4){
		if(k>0){
			for(int x=0;x<3;x++){
				for(int y=0;y<3;y++){
					int xl=I+x,xr=I+x+2*k;
					int yl=J+y,yr=J+y+2*k;
					for(int i=xl;i<=xr;i++){
						for(int j=yl;j<=yr;j++){
							s[id[i][j]]=a[x][y][id[i][j]];
						}
					}
				}
			}
		}
		else{
			for(int x=0;x<3;x++){
				for(int y=0;y<3;y++){
					int xl=I+x,xr=I+x+2*k;
					int yl=J+y,yr=J+y+2*k;
					for(int i=xl;i<=xr;i++){
						for(int j=yl;j<=yr;j++){
							s[id[i][j]]=a[x][y][0];
						}
					}
				}
			}
		}
		if(k<n-1){
			return s;
		}
		auto vis=vector(2*n+1,vector<bool>(2*n+1,false));
		queue<pair<int,int>>q;
		int ans=0;
		for(int i=0;i<=2*n;i++){
			for(int j=0;j<=2*n;j++){
				if(!vis[i][j]&&s[id[i][j]]=='1'){
					q.push({i,j});
					vis[i][j]=true;
					ans++;
					while(!q.empty()){
						auto [x,y]=q.front();
						q.pop();
						for(int l=0;l<4;l++){
							int nx=x+dx[l],ny=y+dy[l];
							if(nx<0||ny<0||nx>2*n||ny>2*n||vis[nx][ny]||s[id[nx][ny]]=='0') continue;
							vis[nx][ny]=true;
							q.push({nx,ny});
						}
					}
				}
			}
		}
		s=string(100,'0');
		for(int i=0;i<30;i++){
			if(ans&(1<<i)){
				s[i]='1';
			}
		}
		return s;
	}
	return string(100,'0');
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...