Rezultati

Up. imeNalogaJezikRezultatČas oddaje
CryADsisAM Prijateljske besede C# 0/100Napačen odgovor (WA) 20. apr '17 @ 16:43

Test Točke Porabljen spomin Porabljen čas Status
#1 12/12 23,621 MiB 0,000 s OK
#2 0/12 21,578 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​14<<<EOF>>>
Pravilen izhod:
​76
<<<EOF>>>
#3 0/12 25,723 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​124<<<EOF>>>
Pravilen izhod:
​2978
<<<EOF>>>
#4 0/12 25,348 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​16<<<EOF>>>
Pravilen izhod:
​2154
<<<EOF>>>
#5 0/13 25,566 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​8<<<EOF>>>
Pravilen izhod:
​20
<<<EOF>>>
#6 0/13 23,512 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​14<<<EOF>>>
Pravilen izhod:
​819
<<<EOF>>>
#7 13/13 21,578 MiB 0,000 s OK
#8 0/13 23,621 MiB 0,000 s Napačen odgovor
Tvoj izhod:
​10<<<EOF>>>
Pravilen izhod:
​1178
<<<EOF>>>

Ocenjevani program (Program.cs):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace Kolo1
{
    class Program
    {
        static void Main(string[] args)
        {
            var besede = new List<string>();
            int N = int.Parse(Console.ReadLine());
            for(int i = 0; i < N; i++)
            {
                besede.Add(Console.ReadLine());
            }

            if (besede.Count == 1) { Console.Write(1); return; }

            var usedC = new List<int>() { 0 };
            
            int friends = 1;
            var initialCompanions = getCompanions(0, besede, usedC);
            foreach (var s in initialCompanions) usedC.Add(s.Key);

            friends += initialCompanions.Count;


            for (int i = 1; i < besede.Count; i++)
            {
                if (usedC.Contains(i) == false) continue;

                var lst = getCompanions(i, besede, usedC);
                friends += lst.Count;

                foreach(var s in lst) usedC.Add(s.Key);
            }

            Console.Write(friends);
        }

        static Dictionary<int, string> getCompanions(int indx, List<string> words, List<int> check)
        {
            var list = new Dictionary<int, string>();
            for(int i = 0; i < words.Count; i++)
            {
                if (i == indx) continue;
                if (isCompanion(words[indx], words[i]) && check.Contains(i) == false) list.Add(i, words[i]);
            }
            return list;
        }

        static bool isCompanion(string w1, string w2)
        {
            var prefix1 = w1.Substring(0, 3);
            var prefix2 = w2.Substring(0, 3);
            var suffix1 = w1.Substring(w1.Length - 3, 3);
            var suffix2 = w2.Substring(w2.Length - 3, 3);

            return prefix1 == prefix2 || suffix1 == suffix2;
        }
    }
}