1258 - Camisetas
Basicamente usar a ordenação com critérios customizados.
Last updated
Basicamente usar a ordenação com critérios customizados.
Last updated
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
struct Camiseta
{
char nome[100], cor[10], tamanho[10];
};
int comp(const void *a, const void *b)
{
struct Camiseta *cA = (struct Camiseta *)a;
struct Camiseta *cB = (struct Camiseta *)b;
if (strcmp(cA->cor, cB->cor) == 0)
{
if (strcmp(cA->tamanho, cB->tamanho) == 0)
{
return strcmp(cA->nome, cB->nome);
}
return -strcmp(cA->tamanho, cB->tamanho);
}
return strcmp(cA->cor, cB->cor);
}
int main()
{
int N, first;
struct Camiseta camisetas[60];
first = 1;
while (scanf("%d\n", &N))
{
if (!N)
break;
if (first)
first = 0;
else
printf("\n");
for (int i = 0; i < N; ++i)
{
scanf("%[^\n]\n", &(camisetas[i].nome));
scanf("%s %s\n", &(camisetas[i].cor), &(camisetas[i].tamanho));
}
qsort(camisetas, N, sizeof(struct Camiseta), comp);
for (int i = 0; i < N; ++i)
{
printf("%s %s %s\n", camisetas[i].cor, camisetas[i].tamanho, camisetas[i].nome);
}
}
return 0;
}#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Camiseta
{
public:
string nome, cor, tamanho;
Camiseta()
{
nome = "";
cor = "";
tamanho = "";
}
Camiseta(string n, string c, string t)
{
nome = n;
cor = c;
tamanho = t;
}
};
bool comp(Camiseta a, Camiseta b)
{
if (a.cor == b.cor)
{
if (a.tamanho == b.tamanho)
{
return a.nome < b.nome;
}
return a.tamanho > b.tamanho;
}
return a.cor < b.cor;
}
int main()
{
int N;
bool first;
vector<Camiseta> camisetas;
first = true;
while (cin >> N)
{
if (!N)
break;
cin.ignore();
if (first)
first = false;
else
cout << endl;
camisetas.assign(N, Camiseta());
for (int i = 0; i < N; ++i)
{
getline(cin, camisetas[i].nome);
cin >> camisetas[i].cor >> camisetas[i].tamanho;
cin.ignore();
}
sort(camisetas.begin(), camisetas.end(), comp);
for (int i = 0; i < N; ++i)
{
cout << camisetas[i].cor << " " << camisetas[i].tamanho << " " << camisetas[i].nome << endl;
}
}
return 0;
}var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.trim().split('\n');
lines.pop();
class Camiseta{
constructor(n, c, t){
this.nome = n;
this.cor = c;
this.tamanho = t;
}
}
const comp = (a, b) => {
if(a.cor === b.cor){
if(a.tamanho === b.tamanho){
if(a.nome < b.nome) return -1;
if(a.nome > b.nome) return 1;
return 0;
}
if(a.tamanho > b.tamanho) return -1;
return 1;
}
if(a.cor < b.cor) return -1;
return 1;
};
let first = true;
while(lines.length){
let N = parseInt(lines.shift());
if(first)
first = false;
else
console.log("");
let camisetas = [];
for(let i = 0; i < N; ++i){
let nome = lines.shift().trim();
let [cor, tamanho] = lines.shift().trim().split(' ');
camisetas.push(new Camiseta(nome, cor, tamanho));
}
camisetas.sort(comp);
for(let i = 0; i < N; ++i){
console.log(`${camisetas[i].cor} ${camisetas[i].tamanho} ${camisetas[i].nome}`);
}
}#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Camiseta
{
public:
string nome, cor, tamanho;
Camiseta()
{
nome = "";
cor = "";
tamanho = "";
}
Camiseta(string n, string c, string t)
{
nome = n;
cor = c;
tamanho = t;
}
};
bool comp(Camiseta a, Camiseta b)
{
if (a.cor == b.cor)
{
if (a.tamanho == b.tamanho)
{
return a.nome < b.nome;
}
return a.tamanho > b.tamanho;
}
return a.cor < b.cor;
}
int main()
{
int N;
bool first;
vector<Camiseta> camisetas;
first = true;
while (cin >> N)
{
if (!N)
break;
cin.ignore();
if (first)
first = false;
else
cout << endl;
camisetas.assign(N, Camiseta());
for (int i = 0; i < N; ++i)
{
getline(cin, camisetas[i].nome);
cin >> camisetas[i].cor >> camisetas[i].tamanho;
cin.ignore();
}
sort(camisetas.begin(), camisetas.end(), comp);
for (int i = 0; i < N; ++i)
{
cout << camisetas[i].cor << " " << camisetas[i].tamanho << " " << camisetas[i].nome << endl;
}
}
return 0;
}#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Camiseta
{
public:
string nome, cor, tamanho;
Camiseta()
{
nome = "";
cor = "";
tamanho = "";
}
Camiseta(string n, string c, string t)
{
nome = n;
cor = c;
tamanho = t;
}
};
bool comp(Camiseta a, Camiseta b)
{
if (a.cor == b.cor)
{
if (a.tamanho == b.tamanho)
{
return a.nome < b.nome;
}
return a.tamanho > b.tamanho;
}
return a.cor < b.cor;
}
int main()
{
int N;
bool first;
vector<Camiseta> camisetas;
first = true;
while (cin >> N)
{
if (!N)
break;
cin.ignore();
if (first)
first = false;
else
cout << endl;
camisetas.assign(N, Camiseta());
for (int i = 0; i < N; ++i)
{
getline(cin, camisetas[i].nome);
cin >> camisetas[i].cor >> camisetas[i].tamanho;
cin.ignore();
}
sort(camisetas.begin(), camisetas.end(), comp);
for (int i = 0; i < N; ++i)
{
cout << camisetas[i].cor << " " << camisetas[i].tamanho << " " << camisetas[i].nome << endl;
}
}
return 0;
}#include <stdlib.h>
#include <string.h>
#include <stdio.h>
struct Camiseta
{
char nome[100], cor[10], tamanho[10];
};
int comp(const void *a, const void *b)
{
struct Camiseta *cA = (struct Camiseta *)a;
struct Camiseta *cB = (struct Camiseta *)b;
if (strcmp(cA->cor, cB->cor) == 0)
{
if (strcmp(cA->tamanho, cB->tamanho) == 0)
{
return strcmp(cA->nome, cB->nome);
}
return -strcmp(cA->tamanho, cB->tamanho);
}
return strcmp(cA->cor, cB->cor);
}
int main()
{
int N, first;
struct Camiseta camisetas[60];
first = 1;
while (scanf("%d\n", &N))
{
if (!N)
break;
if (first)
first = 0;
else
printf("\n");
for (int i = 0; i < N; ++i)
{
scanf("%[^\n]\n", &(camisetas[i].nome));
scanf("%s %s\n", &(camisetas[i].cor), &(camisetas[i].tamanho));
}
qsort(camisetas, N, sizeof(struct Camiseta), comp);
for (int i = 0; i < N; ++i)
{
printf("%s %s %s\n", camisetas[i].cor, camisetas[i].tamanho, camisetas[i].nome);
}
}
return 0;
}#include <stdlib.h>
#include <string.h>
#include <stdio.h>
struct Camiseta
{
char nome[100], cor[10], tamanho[10];
};
int comp(const void *a, const void *b)
{
struct Camiseta *cA = (struct Camiseta *)a;
struct Camiseta *cB = (struct Camiseta *)b;
if (strcmp(cA->cor, cB->cor) == 0)
{
if (strcmp(cA->tamanho, cB->tamanho) == 0)
{
return strcmp(cA->nome, cB->nome);
}
return -strcmp(cA->tamanho, cB->tamanho);
}
return strcmp(cA->cor, cB->cor);
}
int main()
{
int N, first;
struct Camiseta camisetas[60];
first = 1;
while (scanf("%d\n", &N))
{
if (!N)
break;
if (first)
first = 0;
else
printf("\n");
for (int i = 0; i < N; ++i)
{
scanf("%[^\n]\n", &(camisetas[i].nome));
scanf("%s %s\n", &(camisetas[i].cor), &(camisetas[i].tamanho));
}
qsort(camisetas, N, sizeof(struct Camiseta), comp);
for (int i = 0; i < N; ++i)
{
printf("%s %s %s\n", camisetas[i].cor, camisetas[i].tamanho, camisetas[i].nome);
}
}
return 0;
}class Camiseta:
def __init__(self, n, c, t):
self.nome = n
self.cor = c
self.tamanho = t
def comp(a, b):
if(a.cor == b.cor):
if(a.tamanho == b.tamanho):
if(a.nome < b.nome):
return -1
if(a.nome > b.nome):
return 1
return 0
if(a.tamanho > b.tamanho):
return -1
return 1
if(a.cor < b.cor):
return -1
return 1
def particao(V, inicio, fim):
pivo = V[fim - 1]
i = inicio
for j in range(inicio, fim):
if(comp(V[j], pivo) < 0):
V[j], V[i] = V[i], V[j]
i += 1
if(comp(pivo, V[i]) < 0):
V[fim - 1], V[i] = V[i], V[fim - 1]
return i
def quickSort(V, inicio, fim):
if(fim > inicio):
posicaoPivo = particao(V, inicio, fim)
quickSort(V, inicio, posicaoPivo)
quickSort(V, posicaoPivo + 1, fim)
first = True
while True:
try:
N = int(input())
if(N == 0):
break
if(first):
first = False
else:
print('')
camisetas = []
for _ in range(N):
nome = input()
cor, tamanho = input().strip().split(' ')
camisetas.append(Camiseta(nome, cor, tamanho))
quickSort(camisetas, 0, len(camisetas))
for camiseta in camisetas:
print(f'{camiseta.cor} {camiseta.tamanho} {camiseta.nome}')
except EOFError:
break