Решение задачи Ученики с Acmp

Без пояснения   Просмотров: 58


Однажды, неловкая секретарша перепутала личные дела учащихся. Теперь их снова необходимо упорядочить сначала по классам, а внутри класса по фамилиям.


Код

#include <bits/stdc++.h>

using namespace std;

int main()
{

    int n;
    cin >> n;
    vector<vector<string> > a;
    vector<string> t(5);
    for(int i = 0; i < 5; ++i){
        t[i] = "0";
    }
    for(int i = 0; i < n; ++i)
        a.push_back(t);

    for(int i = 0; i < n; ++i){
        cin >> a[i][2] >> a[i][3] >> a[i][0] >> a[i][4];
        string s = a[i][0];
        a[i][1] = s[s.size() - 1];
        s.pop_back();
        a[i][0] = s;
    }
	// данные расположены в матрице
    for(int i = 0; i < n; ++i){
        for(int j = i + 1; j < n; ++j){
            if(a[i][0].size() > a[j][0].size()){
                swap(a[i], a[j]);
            }
            else if(a[i][0] > a[j][0] && a[i][0].size() == a[j][0].size()){
                swap(a[i], a[j]);
            }
            else if(a[i][0] == a[j][0]){
                    if(a[i][1] > a[j][1])
                        swap(a[i], a[j]);
                    else if(a[i][1] == a[j][1])
                            if(a[i][2] > a[j][2])
                                swap(a[i], a[j]);
            }

        }
    }

    for(int i = 0; i < a.size(); ++i){
        for(int j = 0; j < a.at(i).size(); ++j)
            if(j == 0){
                cout << a[i][j] + a[i][j + 1] << " ";
                ++j;
            }
            else
                cout << a[i][j] << " ";
        cout << endl;
    }

    return 0;
}

         

Администратор Photo Автор: Администратор


Код


    #include <iostream>
#include <string>
using namespace std;
struct pup{ string f; string n; int c; char b;string d; };
main(){
	int i,n,j;
	cin>>n;	
	pup a[n],e;
	for(i=0; i<n; ++i){
		cin>>a[i].f>>a[i].n>>a[i].c>>a[i].b>>a[i].d;
	if(i&&(a[i].c<a[i-1].c||a[i].c==a[i-1].c&&a[i].b<a[i-1].b||
	a[i].c==a[i-1].c&&a[i].b==a[i-1].b&&a[i].f<a[i-1].f)){
			e=a[i];j=i;
			while(j&&(e.c<a[j-1].c||e.c==a[j-1].c&&e.b<a[j-1].b||e.c==a[j-1].c&&
			e.b==a[j-1].b&&e.f<a[j-1].f)){
				a[j]=a[j-1]; j--; }
			a[j]=e;
		}
	}
	for(auto x:a) cout<<x.c<<x.b<<' '<<x.f<<' '<<x.n<<' '<<x.d<<endl;
}   
        

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться