using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Kurs_Epifanov
{
struct Student
{
public string Name;
public int year;
public int month;
public int day;
public Student(String Name_, int year_, int month_, int day_)
{
Name = Name_;
year = year_;
month = month_;
day = day_;
}
}
class Program
{
static void insrtsort(Student[] stud,int[] mas,int l,int r)
{
int y; Student y_;//переменная для перестановки членов
for (int i = l; i < r; i++)
{
if (mas[i] < mas[i + 1])
{
y_ = stud[i]; stud[i] = stud[i + 1]; stud[i + 1] = y_;
y = mas[i]; mas[i] = mas[i + 1]; mas[i + 1] = y;
int j=i;
if (j > 0)
{
while ((mas[j] > mas[j - 1]) && (j > l))
{
y_ = stud[j]; stud[j] = stud[j - 1]; stud[j - 1] = y_;
y = mas[j]; mas[j] = mas[j - 1]; mas[j - 1] = y;
j = j - 1;
if (j ==0) break;
}
}
}
}
}
static void quicksort(Student[] stud, int[] mas, int l, int r)
{
Student y; int y_;//переменная для перестановки членов
int x=mas[(l+r)/2];//опорный элемент
int i = l, j = r;
do
{
while (mas[i] > x) i++;
while (mas[j] < x) j--;
if (i <= j)
{
y_ = mas[i]; mas[i] = mas[j]; mas[j] = y_;
y = stud[i]; stud[i] = stud[j];
stud[j] = y; i++; j--;
}
}while(i<=j);
if (l<j) quicksort(stud,mas,l,j);
if (i < r) quicksort(stud, mas, i, r);
}
static void Main(string[] args)
{
StreamWriter wr = new StreamWriter("C:\\Данные\\C#\\Kurs_Epifanov\\output.txt");
StreamReader sr = new StreamReader("C:\\Данные\\C#\\Kurs_Epifanov\\input.txt", Encoding.GetEncoding(1251));
int M;
M=int.Parse(sr.ReadLine());
Student[] stud = new Student[11];
string line;
for (int i = 0; i < stud.Length; i++)
{
line = sr.ReadLine(); // Заполнение
string[] mas = line.Split(' '); // Массива
stud[i].Name = mas[0] + mas[1]; // Типа
string[] date = mas[2].Split('.'); // Student
stud[i].year = int.Parse(date[2]); //
stud[i].month = int.Parse(date[1]); //
stud[i].day = int.Parse(date[0]); //
//wr.WriteLine("Имя= {0} дата= {3:d}.{2:d}.{1:d}", stud[i].Name, stud[i].year, stud[i].month, stud[i].day);
}
int[] year= new int[stud.Length];
for(int i=0;i<stud.Length;i++)
{
year[i]=stud[i].year; //заполнение массива year элементами stud.year
}
quicksort(stud,year,0,stud.Length-1); //выполнение быстрой сортировки
int[] month=new int[stud.Length];
int l=0, r=0;
for (int i = 0; i < stud.Length; i++)
{
month[i] = stud[i].month; // заполнение массива month
}
for (int i = 0; i < stud.Length; i++)
{
if (stud[l].year == stud[i].year)
{
r = r + 1;
}
if (stud[l].year != stud[i].year)
{ //сортировка групп, число элементов в которой больше М, методом простого включнеия
r = r + l - 1;
if (r-l+1 >= M) {
//Console.WriteLine(l);
//Console.WriteLine(r);
insrtsort(stud, month, l, r); //применение метода сортировки простым включением по месяцу
}
l=i;r=1;
}
}
//---
int[] day = new int[stud.Length];
l = 0; r = 0;
for (int i = 0; i < stud.Length; i++)
{
day[i] = stud[i].day; // заполнение массива day
}
for (int i = 0; i < stud.Length; i++)
{
if ((stud[l].year == stud[i].year) && (stud[l].month == stud[i].month))
{
r = r + 1;
}
if ((stud[l].year != stud[i].year) || (stud[l].month != stud[i].month))
{ //сортировка групп, число элементов в которой больше М, методом простого включнеия
r = r + l - 1;
if (r - l + 1 >= M)
{
//Console.WriteLine(l);
//Console.WriteLine(r);
insrtsort(stud, day, l, r); //применение метода сортировки простым включением по дню
}
l = i; r = 1;
}
}
wr.WriteLine("----- ");
for (int i = 0; i < stud.Length; i++)
{
wr.WriteLine("Имя= {0} дата= {3:d}.{2:d}.{1:d}", stud[i].Name, stud[i].year, stud[i].month, stud[i].day);
}
wr.Close();
sr.Close();
}
}
}