Submission #1243940
Source Code Expand
#include <iostream> #include <cmath> #include <algorithm> using namespace std; typedef long long int long long int; #define MOD (1e9+7); #define INF (2e9) long long int c(int x, int y) {//xCyを返す関数 long long int a = 1; for (int i = 1; i<=y; i++) { a *= x+1-i;//x,x-1,・・・,x-y+1 がaにかけられる a/=i;//1,2,・・・,y をaから割る } return a; } int main(void) { int n, a, b; cin >> n >> a >> b; long long int *v = new long long int[n]; for (int i = 0; i<n; i++) { cin >> v[i]; } sort(v, v + n); reverse(v, v + n); long long int min = v[a-1]; //min = 価値平均が最大となるように選んだ品物のうち、 // 一番価値の低いものの価値 → long long int ans = 0;//答え(場合の数) double ans_max=0;//答え(最大値) if (v[0] == min) {//A番目まですべて同じ価値なら ans_max=min;// 答え int i; for (i = 0; i<n; i++) { if (v[i] != min) {//{min,min,・・・,min,no,・・・} ならばnoを指して止まる break; } } //i = min と同じ価値の品物の個数 while (a <= b && a <= i) {//i個のうちa個選ぶ、a+1個選ぶ、・・・・、min(b,i)個選ぶ ans += c(i, a); a++; } } else { for(int k=0;k<a;k++){//A番目までの商品の平均値 ans_max+=v[k]; } ans_max/=a; int minp, minm; for (minp = a-1; v[minp] == min && minp<n; minp++) {}//minより小さい値を見つけたらstop for (minm = a-1; v[minm] == min &&minm >= 0; minm--) {} int kosu = minp - minm - 1; a -= n - minp; ans = c(kosu, a); } cout << ans_maxp<<"\n"<<ans << "\n"; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - Maximum Average Sets |
User | Jirotech |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 1949 Byte |
Status | CE |
Compile Error
./Main.cpp:5:23: error: ‘long long long’ is too long for GCC typedef long long int long long int; ^ ./Main.cpp:5:28: error: ‘long long long’ is too long for GCC typedef long long int long long int; ^ ./Main.cpp:5:33: error: multiple types in one declaration typedef long long int long long int; ^ ./Main.cpp:5:33: error: declaration does not declare anything [-fpermissive] ./Main.cpp: In function ‘int main()’: ./Main.cpp:66:13: error: ‘ans_maxp’ was not declared in this scope cout << ans_maxp<<"\n"<<ans << "\n"; ^