1 / 8
Dec 2017

Zadanie chyba weszło niedawno.

Chciałem pochwalić autora bardzo fajne zadanie. Wydawało mi się banalne na początku ale jednak chwilkę nad nim spędziłem. Sędzia miły odrazu dał AC.
W sumie napsiałem odrazu na 0 więc nie wiem czy ciężko jest się wbić na 1 stronę ale nadal jest szansa.

Dawno nie miałem okazji pisać takich kwiatków:

char (*c1)[40] = *( char (**)[40] )n1;

Moja małą podpowiedź do zadania.
elementów nie jest więcej niż 25000 i nazwy zadań nie są większe niż 40.

  • created

    Dec '17
  • last reply

    Jul '18
  • 7

    replies

  • 1.1k

    views

  • 6

    users

  • 3

    likes

  • 1

    link

“Oficjalne” ograniczenia na kodowe nazwy zadań są bardziej restrykcyjne - minimum 3 max 8 dużych liter [bez polskich znaków]. Okazuje się że można jednak użyć trochę więcej znaków [co najmniej 10 - http://pl.spoj.com/problems/MEETINGSPL/10] oraz cyfr i znaku podkreślenia - zobacz chociażby kody zadań z algoligi czy fraktala. Listy zadań do testów są listami rozwiązanych zadań prawdziwych użytkowników, ale koledzy namawiają mnie do wygenerowania większych, maksymalnych danych :wink:

BTW
Dzięki za ocenę zadania, zawsze to miło słyszeć pochwały [już druga :wink: ]

BTW 2
Co do wersji angielskiej, w zasadzie jest już gotowa [te same testy], ale ciągle boję się o kiepską jakość mojego angielskiego.

Chyba jedyne, w którym jestem pierwszy w rankingu. To jedna z jego wielu zalet :wink:

I to za pierwszym razem, brawo, gratuluję!

4 months later

Witam
Dostaję “błędna odpowiedź”

  using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> roza = new List<string>();
            List<string> ja = new List<string>();
            char[] sep = new char[] { ' ', '\t' };
            string txt;
            int kto = 0;
            
            while ((txt = Console.ReadLine()) != null)
            {
                if (txt == "List of solved classical problems:")
                    { kto++; continue;}
                string[] sp = txt.Split(sep, StringSplitOptions.RemoveEmptyEntries);
                
                if (kto == 1)
                    foreach (var x in sp) roza.Add(x);
                else if (kto == 2) 
                    foreach (var x in sp) ja.Add(x);
            }
            
            for(int i = 0; i < ja.Count;i++)
                roza.Remove(ja[i]);
            
            roza.Sort();
            foreach(var x in roza) Console.WriteLine(x);
        }
    }
}

Zakładam, że żadne zadanie nie pojawia się więcej niż raz na liście.
Nie wiem w czym tkwi problem - przykładowy test daje prawidłową odpowiedź.

W C# jest pewien problem z domyślnym StringComparerem przy sortowaniu. Mimo, że kod ASCII znaku _ wskazywałby na to, że powinie być po wszystkich dużych literach, to w C# domyślnie występuje on przed:

image
ale po .Sort():
image

Musisz podać mu jakiś “ludzki” comparer w parametrze, np. StringComparer.Ordinal

Faktycznie o to chodziło, po podaniu comparera z parametrem Ordinal zadanie zostało zaakceptowane.
Dzięki za pomoc:)

1 month later

ano, fajne :slight_smile: AC za pierwszym razem, w 0.0 nie celuje chociaż tu raczej nie trudno :slight_smile: Wyglądało straszniej niż w rzeczywistości :smiley: