제출 #1330285

#제출 시각아이디문제언어결과실행 시간메모리
1330285ema_nicoleLanguages (IOI10_languages)C++17
컴파일 에러
0 ms0 KiB
#include "grader.h"
#include <iostream>
#include <map>

using namespace std;
using ll = long long;


struct limbi { ///da, cu hash-uri (ish)
    map <int, int> unu, doi, trei;
    int cate = 0;
}cnt[57];

int baza = 65537, MOD = 100076969;
int convert2(int a, int b) {
    ll nr = (1LL * a * baza + b) % MOD;
    return nr;
}
int convert3(int a, int b, int c) {
    ll nr = (((1LL * a * baza * baza) % MOD) + ((1LL * b * baza) % MOD) + c) % MOD;
    return nr;
}

double limba[57];
int excerpt(int *e) {
    limbi a;
    for(int i = 0; i < 100; i++) ///init
        a.unu[e[i]] = 1;
    for(int i = 1; i < 100; i++) {
        int nr = convert2(e[i - 1], e[i]);
        a.doi[nr] = 1;
    }
    for(int i = 2; i < 100; i++) {
        int nr = convert3(e[i - 2], e[i - 1], e[i]);
        a.trei[nr] = 1;
    }

    for(int i = 0; i <= 55; i++) ///reset
        limba[i] = 0;

    double maxx = -1, ans = 0;
    for(int i = 0; i <= 55; i++) {
        for(auto x : a.unu) {
            if(cnt[i].unu.find(x.first) != cnt[i].unu.end())
                limba[i] +=  ((double)cnt[i].unu[x.first] / (double)cnt[i].cate);
        }
        for(auto x : a.doi) {
            if(cnt[i].doi.find(x.first) != cnt[i].doi.end())
                limba[i] += ((double)cnt[i].doi[x.first] / (double)cnt[i].cate);
        }
        for(auto x : a.trei) {
            if(cnt[i].trei.find(x.first) != cnt[i].trei.end())
                limba[i] += ((double)cnt[i].trei[x.first] / (double)cnt[i].cate);
        }
        if(limba[i] > maxx) {
            maxx = limba[i];
            ans = i;
        }
    }
    int check = language(ans);
    cnt[check].cate++;

    if(a.unu.size() > cnt[check].unu.size())
        swap(a.unu, cnt[check].unu);
    if(a.doi.size() > cnt[check].doi.size())
        swap(a.doi, cnt[check].doi);
    if(a.trei.size() > cnt[check].trei.size())
        swap(a.trei, cnt[check].trei);

    for(auto x : a.unu)
        cnt[check].unu[x.first] += x.second;
    for(auto x : a.doi)
        cnt[check].doi[x.first] += x.second;
    for(auto x : a.trei)
        cnt[check].trei[x.first] += x.second;
}

int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

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

lang.cpp: In function 'int excerpt(int*)':
lang.cpp:76:1: warning: no return statement in function returning non-void [-Wreturn-type]
   76 | }
      | ^
/usr/bin/ld: /tmp/ccqrGnkm.o: in function `main':
grader.c:(.text.startup+0x0): multiple definition of `main'; /tmp/cc2PjpUL.o:lang.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status