ГЖО 7-8 класс 2019 год
Задача F. UCL Fantasy
Недавно Данияр начал увлекаться футболом. И сразу начал играть UCL Fantasy. Правила простые, каждый игрок собирает себе команду из 15 игроков(2 вратаря, 5 защитников, 5 полузащитников, 3 нападающих) играющих в Лиге чемпионов УЕФА. Каждый игрок за тур получает какие-то баллы в зависимости как он сыграл. Баллы можно получить за гол, за голевой пас, вратарю за сухую игру, отрицательный балл за удаления и т.д. Перед каждым туром Данияр выбирает состав на тур, состоящий из 11 игроков и среди них выбирает капитана. В составе всегда должен быть ровно один вратарь, и возможны следующие схемы: 5(защитника)-4(полузащитника)-1(нападающий), 5-3-2,5-2-3,4-5-1,4-4-2,4-3-3,3-5-2,3-4-3. Тогда очки Данияра, это будет сумма баллов его состава(11 игроков) + баллы его капитана(т.е баллы капитана удваиваются). Данияр знает баллы всех своих игроков, помогите ему выбрать состав на тур, чтобы максимизировать количество его очков.
Messi FW 10 Pique DF 6 Tadic FW 2 Coutinho MF 3 Stegen GK 7 Salah MF 2 Ziyech MF 6 Onana GK 6 Beek MF 8 Son MF 0 Alba DF 8 Suarez FW 8 Blind DF 6 Ligt DF 6 Roberto DF 6Ответ
84
Комментарий/решение:
решение проста
#include<bits/stdc++.h>
#define ll long long
#define N 300005
#define MAX 1000000000
#define rt return
#define pr printf
#define vec vector
#define pb push_back
#define sz size()
#define rev reverse
#define srt sort
#define cn continue
#define sc scanf
#define pll pair< ll, ll >
#define ff first
#define ss second
#define dd long double
#define SS stringstream
#define graph g[ a ].pb( b ), g[ b ].pb( a )
#define pause system("PAUSE")
#define off exit( 0 )
#define speed ios_base::sync_with_stdio(); cin.tie(0); cout.tie(0)
using namespace std;
string n, p;
ll a1, b1, c1, m, s, gk, q, w, e, r, t, y, u;
vector< ll > g, d, o, f, a;
int main()
{
for( ll i = 0; i < 15; i ++ )
{
cin >> n >> p >> m;
if( p == "FW" ) f.pb( m );
else if( p == "DF" ) d.pb( m );
else if( p == "GK" ) g.pb( m );
else if( p == "MF" ) o.pb( m );
}
srt( g.rbegin(), g.rend() );
srt( d.rbegin(), d.rend() );
srt( o.rbegin(), o.rend() );
srt( f.rbegin(), f.rend() );
gk = g[ 0 ];
q = gk + d[ 0 ] + d[ 1 ] + d[ 2 ] + d[ 3 ] + d[ 4 ] + o[ 0 ] + o[ 1 ] + o[ 2 ] + f[ 0 ] + f[ 1 ];
w = gk + d[ 0 ] + d[ 1 ] + d[ 2 ] + d[ 3 ] + d[ 4 ] + o[ 0 ] + o[ 1 ] + f[ 0 ] + f[ 1 ] + f[ 2 ];
e = gk + d[ 0 ] + d[ 1 ] + d[ 2 ] + d[ 3 ] + o[ 0 ] + o[ 1 ] + o[ 2 ] + o[ 3 ] + o[ 4 ] + f[ 0 ];
r = gk + d[ 0 ] + d[ 1 ] + d[ 2 ] + d[ 3 ] + o[ 0 ] + o[ 1 ] + o[ 2 ] + o[ 3 ] + f[ 1 ] + f[ 0 ];
t = gk + d[ 0 ] + d[ 1 ] + d[ 2 ] + d[ 3 ] + o[ 0 ] + o[ 1 ] + o[ 2 ] + f[ 2 ] + f[ 1 ] + f[ 0 ];
y = gk + d[ 0 ] + d[ 1 ] + d[ 2 ] + o[ 0 ] + o[ 1 ] + o[ 2 ] + o[ 3 ] + o[ 4 ] + f[ 0 ] + f[ 1 ];
u = gk + d[ 0 ] + d[ 1 ] + d[ 2 ] + o[ 0 ] + o[ 1 ] + o[ 2 ] + o[ 3 ] + f[ 0 ] + f[ 1 ] + f[ 2 ];
cout << max( { q, w, e, r, t, y, u } ) + max( { gk, d[ 0 ], o[ 0 ], f[ 0 ] } );
}
Возможно, что при неправильном наборе формул, они будут
доредактированы модератором. При этом содержание не будет меняться.