답안 #727727

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
727727 2023-04-21T07:54:34 Z anusha777 화성 (APIO22_mars) C++17
컴파일 오류
0 ms 0 KB
#include "mars.h"
#include <bits/stdc++.h>
#define fast 			ios::sync_with_stdio(0); cin.tie(NULL);cout.tie(NULL)
#define sz(x)			(int)((x).size())
#define pb				push_back
#define vi				vector<int>
#define vb				vector<bool>
#define vvb				vector<vb>
#define pi				pair<int,int>
#define vpi				vector<pi>
#define vvi				vector<vi>
#define vvs				vector <vector<string>>
#define vc				vector<char>
#define all(x)			x.begin(), x.end()
#define rall(x)			x.rbegin(), x.rend()
#define pbb()			pop_back()
#define f				first
#define s				second
#define ll				long long
#define int				long long
#define ull				unsigned long long
#define line               cout<<"_____________________________"<<endl;
#define forr(i, a, b)      for(int i=a; i<b; i++)
const int N=1e5+1, mod=998244353, inf=1e18+1;
using namespace std;
vi dx={0, 1, 0, -1}, dy={1, 0, -1, 0};
string phase0(vvs& a, int& x, int& y)
{
    string s;
    forr(i, 0, 3) forr(j, 0, 3) s.pb(a[i][j][0]);
    forr(i , 9, 100) s.pb('0');
    return s;
}
vvb vis(5, vb(5));
vvi g(5, vi(5));
void bfs(int x, int y)
{
    queue<pi> q;
    q.push({x, y});
    while(!q.empty())
    {
        pi t= q.front();
        q.pop();
        if(vis[t.f][t.s]) continue;
        vis[t.f][t.s]=1;
        forr(i, 0, 4)
        {
            int xt= t.f+dx[i], yt= t.s+ dy[i];
            if(xt>=0 and xt<5 and yt>=0 and yt<5) if(!vis[xt][yt] and g[xt][yt]==1)
                    q.push({xt, yt});
        }
    }
}
string process(vvs a, int i, int j, int k, int n)
{
    if(k==0) return phase0(a, i, j);
    forr(i, 0, 3) forr(j, 0, 3) forr(k, 0, 9)
            {
                int ii= i  + k%3, jj= j+ k/3;
                g[ii][jj]= a[i][j][k]-'0';
            }
    int total=0;
    forr(i, 0, 5) forr(j, 0, 5) if(!vis[i][j] and g[i][j]==1)
            {
                bfs(i, j);
                total++;
            }
    string ans;
    for(int i=0 , mask=1; i<100; i++, mask*=2)
    {
        if((total&mask)==mask) ans.pb('1');
        else ans.pb('0');
    }
    return ans;
}
#include "mars.h"

#include <iostream>
#include <vector>
#include <algorithm>
#include <cassert>
#include <string>
#include <bitset>

using namespace std;

static void WA(string msg)
{
	cout << "WA: " << msg << endl;
	exit(0);
}

static long long to_longlong(string s)
{
  long long ans=0;
  for(int i=(int)s.size()-1;i>=0;i--)
    ans=(ans*2)+s[i]-'0';
  return ans;
}

int main()
{
	int t;
	assert(scanf("%d",&t) == 1);
	while(t--)
	{
		int n;
		assert(scanf("%d",&n) == 1);

		vector <vector<char>> s(2*n+1, vector<char>(2*n+1));
		for(int i = 0; i < 2*n+1; i++)
			for(int j = 0; j < 2*n+1; j++)
				assert(scanf(" %c",&s[i][j]) == 1);

		vector <vector<string>> h(2*n+1, vector<string>(2*n+1, string(100 ,'0')));
		for(int i = 0; i < 2*n+1; i++)
			for(int j = 0; j < 2*n+1; j++)
				h[i][j][0] = s[i][j];

		vector <vector<string>> subarr(3, vector<string>(3));
		for(int k = 0; k < n; k++)
		{
			int m = 2*(n-k-1);
			for(int i = 0; i <= m; i++)
			{
				for(int j = 0; j <= m; j++)
				{
					for(int y = 0; y < 3; y++)
					{
						for(int x = 0; x < 3; x++)
						{
							subarr[y][x] = h[i+y][j+x];
						}
					}
					h[i][j] = process(subarr, i, j, k, n);

					if(h[i][j].size() != 100) WA("Invalid return length");
					for(int l = 0; l < 100; l++)
						if(h[i][j][l] != '0' && h[i][j][l] != '1') WA("Invalid return");
				}
			}
		}

		printf("%lld\n",to_longlong(h[0][0]));
	}
}

Compilation message

cc1plus: error: '::main' must return 'int'
In file included from /usr/include/c++/10/cassert:44,
                 from mars.cpp:81:
mars.cpp: In function 'int main()':
mars.cpp:104:15: warning: format '%d' expects argument of type 'int*', but argument 2 has type 'long long int*' [-Wformat=]
  104 |  assert(scanf("%d",&t) == 1);
      |               ^~~~ ~~
      |                    |
      |                    long long int*
mars.cpp:104:17: note: format string is defined here
  104 |  assert(scanf("%d",&t) == 1);
      |                ~^
      |                 |
      |                 int*
      |                %lld
In file included from /usr/include/c++/10/cassert:44,
                 from mars.cpp:81:
mars.cpp:108:16: warning: format '%d' expects argument of type 'int*', but argument 2 has type 'long long int*' [-Wformat=]
  108 |   assert(scanf("%d",&n) == 1);
      |                ^~~~ ~~
      |                     |
      |                     long long int*
mars.cpp:108:18: note: format string is defined here
  108 |   assert(scanf("%d",&n) == 1);
      |                 ~^
      |                  |
      |                  int*
      |                 %lld