제출 #1363047

#제출 시각아이디문제언어결과실행 시간메모리
1363047solution6312Parrots (IOI11_parrots)C++17
컴파일 에러
0 ms0 KiB
//#include "encoder.h"
//#include "encoderlib.h"
//#include "decoder.h"
//#include "decoderlib.h"
#include <iostream>
#include <cassert>
#include <algorithm>
#include <vector>
using namespace std;

void send(int x);
void output(int x);

bool f=0;
vector<int> fac[600];

vector<int> add(vector<int> x, vector<int> y)
{
    if (x.size()<y.size()) swap(x, y);
    vector<int> z(x.size(), 0);
    for (int i=0; i<z.size(); i++)
    {
        z[i]=x[i];
        if (i<y.size()) z[i]+=y[i];
    }
    for (int i=0; i<z.size(); i++)
    {
        if (z[i]>=10)
        {
            if (i==z.size()-1) z.push_back(0);
            z[i+1]+=z[i]/10;
            z[i]%=10;
        }
    }
    reverse(z.begin(), z.end());
    return z;
}
vector<int> mul(vector<int> x, vector<int> y)
{
    if (x.size()<y.size()) swap(x, y);
    vector<int> z(x.size()+y.size()-1, 0);
    for (int i=0; i<x.size(); i++)
    {
        for (int j=0; j<y.size(); j++)
        {
            z[i+j]+=x[i]*y[j];
        }
    }
    for (int i=0; i<z.size(); i++)
    {
        if (z[i]>=10)
        {
            if (i==z.size()-1) z.push_back(0);
            z[i+1]+=z[i]/10;
            z[i]%=10;
        }
    }
    return z;
}
vector<int> div(vector<int> x, vector<int> y)
{
    assert(x.size()>=y.size());
    vector<int> cur={};
    for (int i=x.size()-1; i>=0; i--)
    {
        
    }
}
void init()
{
    fac[0]={1};
    for (int i=1; i<600; i++) fac[i]=mul(fac[i-1], {i});
}

void encode(int N, int A[])
{
    if (!f)
    {
        init();
        f=1;
    }
}
void decode(int N, int L, int B[])
{
    if (!f)
    {
        init();
        f=1;
    }
}

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_N 1000
#define MAX_M 10000

static int message[MAX_N];
static int N, NN;
static int encoded_message[MAX_M];
static int M;
static int output_message[MAX_N];
static int O;

void send(int x) {
  printf("M = %d, send(%d)\n", M, x);
  if (M == MAX_M) {
    printf("Encoded message too long\n");
    exit(0);
  }
  encoded_message[M] = x;
  M++;
}

int read_data() {
  if (NN == M) {
    printf("Read too many encoded message\n");
    exit(0);
  }
  NN++;
  return encoded_message[NN - 1];
}

void output(int y) {
  if (O == N)
    O++;
  if (O > N)
    return;
  output_message[O] = y;
  O++;
}

static void random_shuffle() {
  int i, t, p;
  for (i = 0; i < M - 1; i++) {
    p = rand() % (M - i);
    t = encoded_message[i];
    encoded_message[i] = encoded_message[i + p];
    encoded_message[i + p] = t;
  }
}

static int check_output() {
  int i;

  if (O != N)
    return 0;
  for (i = 0; i < N; i++)
    if (message[i] != output_message[i])
      return 0;
  return 1;
}


int main() {

  scanf("%d", &N);
  for (int i = 0; i < N; i++)
    scanf("%d", &message[i]);

  M = 0;
  encode(N, message);
  random_shuffle();

  NN = 0;
  O = 0;
  decode(N, M, encoded_message);

  if (!check_output()) {
    printf("Incorrect\n");
    exit(0);
  }

  printf("Correct.\n");
  printf("%f\n", (float)M / N);
  return 0;
}
//#include "encoder.h"
//#include "encoderlib.h"
//#include "decoder.h"
//#include "decoderlib.h"
#include <iostream>
#include <cassert>
#include <algorithm>
#include <vector>
using namespace std;

void send(int x);
void output(int x);

bool f=0;
vector<int> fac[600];

vector<int> add(vector<int> x, vector<int> y)
{
    if (x.size()<y.size()) swap(x, y);
    vector<int> z(x.size(), 0);
    for (int i=0; i<z.size(); i++)
    {
        z[i]=x[i];
        if (i<y.size()) z[i]+=y[i];
    }
    for (int i=0; i<z.size(); i++)
    {
        if (z[i]>=10)
        {
            if (i==z.size()-1) z.push_back(0);
            z[i+1]+=z[i]/10;
            z[i]%=10;
        }
    }
    reverse(z.begin(), z.end());
    return z;
}
vector<int> mul(vector<int> x, vector<int> y)
{
    if (x.size()<y.size()) swap(x, y);
    vector<int> z(x.size()+y.size()-1, 0);
    for (int i=0; i<x.size(); i++)
    {
        for (int j=0; j<y.size(); j++)
        {
            z[i+j]+=x[i]*y[j];
        }
    }
    for (int i=0; i<z.size(); i++)
    {
        if (z[i]>=10)
        {
            if (i==z.size()-1) z.push_back(0);
            z[i+1]+=z[i]/10;
            z[i]%=10;
        }
    }
    return z;
}
vector<int> div(vector<int> x, vector<int> y)
{
    assert(x.size()>=y.size());
    vector<int> cur={};
    for (int i=x.size()-1; i>=0; i--)
    {
        
    }
}
void init()
{
    fac[0]={1};
    for (int i=1; i<600; i++) fac[i]=mul(fac[i-1], {i});
}

void encode(int N, int A[])
{
    if (!f)
    {
        init();
        f=1;
    }
}
void decode(int N, int L, int B[])
{
    if (!f)
    {
        init();
        f=1;
    }
}

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_N 1000
#define MAX_M 10000

static int message[MAX_N];
static int N, NN;
static int encoded_message[MAX_M];
static int M;
static int output_message[MAX_N];
static int O;

void send(int x) {
  printf("M = %d, send(%d)\n", M, x);
  if (M == MAX_M) {
    printf("Encoded message too long\n");
    exit(0);
  }
  encoded_message[M] = x;
  M++;
}

int read_data() {
  if (NN == M) {
    printf("Read too many encoded message\n");
    exit(0);
  }
  NN++;
  return encoded_message[NN - 1];
}

void output(int y) {
  if (O == N)
    O++;
  if (O > N)
    return;
  output_message[O] = y;
  O++;
}

static void random_shuffle() {
  int i, t, p;
  for (i = 0; i < M - 1; i++) {
    p = rand() % (M - i);
    t = encoded_message[i];
    encoded_message[i] = encoded_message[i + p];
    encoded_message[i + p] = t;
  }
}

static int check_output() {
  int i;

  if (O != N)
    return 0;
  for (i = 0; i < N; i++)
    if (message[i] != output_message[i])
      return 0;
  return 1;
}


int main() {

  scanf("%d", &N);
  for (int i = 0; i < N; i++)
    scanf("%d", &message[i]);

  M = 0;
  encode(N, message);
  random_shuffle();

  NN = 0;
  O = 0;
  decode(N, M, encoded_message);

  if (!check_output()) {
    printf("Incorrect\n");
    exit(0);
  }

  printf("Correct.\n");
  printf("%f\n", (float)M / N);
  return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

# 1번째 컴파일 단계

encoder.cpp: In function 'std::vector<int> div(std::vector<int>, std::vector<int>)':
encoder.cpp:68:1: warning: control reaches end of non-void function [-Wreturn-type]
   68 | }
      | ^
encoder.cpp: In function 'int main()':
encoder.cpp:158:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  158 |   scanf("%d", &N);
      |   ~~~~~^~~~~~~~~~
encoder.cpp:160:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  160 |     scanf("%d", &message[i]);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccq8sNLW.o: in function `send(int)':
grader_encoder.cpp:(.text+0x90): multiple definition of `send(int)'; /tmp/ccyLRzfw.o:encoder.cpp:(.text+0x80): first defined here
/usr/bin/ld: /tmp/ccq8sNLW.o: in function `main':
grader_encoder.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccyLRzfw.o:encoder.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status