답안 #718116

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
718116 2023-04-03T11:27:25 Z Augustyn Med (COCI22_med) C++17
10 / 50
0 ms 212 KB
#include<iostream>
#include<algorithm>
using namespace std;
struct zawodnik
{
    int wynik;
    int org;
    long long imie;
};
bool comp(zawodnik a,zawodnik b)
{
    if(a.wynik<b.wynik)
    return 0;
    else if(b.wynik<a.wynik)
    return 1;
    return a.imie>=b.imie;
}
int n;
long long pot26[11];
zawodnik *zawodnicy;
int **odp;
int main()
{
    pot26[0]=1;
    for(int i=1;i<=10;++i)
        pot26[i]=pot26[i-1]*26;
    ios_base::sync_with_stdio(0);
    cin>>n;
    zawodnicy=new zawodnik[n];
    odp=new int *[n];
    for(int i=0;i<n;++i)    
    {
        odp[i]=new int[2];
        string imie;
        cin>>imie;
        int dlu=imie.length();
        for(int j=0;j<dlu;++j)
        {
            zawodnicy[i].imie+=pot26[dlu-j-1]*(imie[j]-'a');
        }
        int wyn;
        for(int j=0;j<5;++j)
        {
            cin>>wyn;
            zawodnicy[i].wynik+=wyn;
        }
        zawodnicy[i].org=i;
    }
    sort(zawodnicy,zawodnicy+n,comp);
    int j=0,k=0;
    for(int i=0;i<n;++i)
    {
        while(j<n)
        {
            if(zawodnicy[j].wynik>zawodnicy[i].wynik+500)
                ++j;
            else if(zawodnicy[j].wynik==zawodnicy[i].wynik+500)
            {
                if(zawodnicy[j].imie<zawodnicy[i].imie)
                    ++j;
                else
                    break;
            }
            else
                break;
        }
        while(k<n)
        {
            if(zawodnicy[k].wynik>zawodnicy[i].wynik-500)
                ++k;
            else if(zawodnicy[k].wynik==zawodnicy[i].wynik-500)
            {
                if(zawodnicy[k].imie<zawodnicy[i].imie)
                    ++k;
                else
                    break;
            }
            else
                break;
        }
        odp[zawodnicy[i].org][0]=j+1;
        odp[zawodnicy[i].org][1]=k;
    }
    for(int i=0;i<n;++i)
        cout<<odp[i][0]<<" "<<odp[i][1]<<"\n";

}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Incorrect 0 ms 212 KB Output isn't correct
6 Halted 0 ms 0 KB -