Informatika gyűjtemény

Egy szinttel feljebb tb_ute.cs

2004050607080910

NézetNyomtat

tb_ute.cs (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 1 KB
using System;

namespace Utemezes
{
    class Program
    {
        const string InputFile  = "utemez.be",
                     OutputFile = "utemez.ki";
        const int MaxRendeles = 10000; // A maximális rendelések száma

        private int N, db = 0;
        private int[] kezd, vege, sorszam;

        private void Beolvas()
        {
            System.IO.StreamReader sr = new System.IO.StreamReader(InputFile);
            string[] s;

            N = Convert.ToInt32(sr.ReadLine());
            kezd = new int[N];
            vege = new int[N];
            sorszam = new int[N];

            for (int i = 0; i < N; i++) {
                s = sr.ReadLine().Split();
                kezd[i] = Convert.ToInt32(s[0]);
                vege[i] = Convert.ToInt32(s[1]);
                sorszam[i] = i;
            }

            sr.Close();
        }

        private void Szamol()
        {
            int temp_kezd, temp_vege, temp_sorszam;

            for (int i = 0; i < N - 1; i++)
                for (int j = i + 1; j < N; j++)
                    if (vege[j] < vege[i]) {
                        temp_kezd = kezd[j];  temp_vege = vege[j];  temp_sorszam = sorszam[j];
                        kezd[j] = kezd[i];    vege[j] = vege[i];    sorszam[j] = sorszam[i];
                        kezd[i] = temp_kezd;  vege[i] = temp_vege;  sorszam[i] = temp_sorszam;
                    }

            int ujnap = 1;
            for (int i = 0; i < N; i++)
                if (kezd[i] >= ujnap) {
                    db++;
                    ujnap = vege[i] + 1;
                    sorszam[i] += MaxRendeles; // -1-gyel való szorzás helyett
                }
        }

        private void Kiir()
        {
            System.IO.StreamWriter sw = new System.IO.StreamWriter(OutputFile);

            sw.WriteLine(db);
            for (int i = 0; i < N; i++) {
                if (sorszam[i] >= MaxRendeles)
                    sw.Write("{0} ", sorszam[i] - MaxRendeles + 1);
            }

            sw.Close();
        }

        static void Main(string[] args)
        {
            Program program = new Program();

            program.Beolvas();
            program.Szamol();
            program.Kiir();
        }
    }
}
(Vissza)