結果
| 問題 |
No.447 ゆきこーだーの雨と雪 (2)
|
| ユーザー |
Bantako
|
| 提出日時 | 2017-07-27 19:05:47 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 95 ms / 2,000 ms |
| コード長 | 1,555 bytes |
| コンパイル時間 | 1,315 ms |
| コンパイル使用メモリ | 158,940 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-10 02:11:53 |
| 合計ジャッジ時間 | 3,890 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 25 |
コンパイルメッセージ
main.cpp:3:1: warning: ISO C++ forbids declaration of ‘main’ with no type [-Wreturn-type]
3 | main(){
| ^~~~
main.cpp: In function ‘int main()’:
main.cpp:6:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
6 | scanf("%d",&N);
| ~~~~~^~~~~~~~~
main.cpp:7:34: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
7 | for(int i = 0;i < N;i++)scanf("%d",&L[i]);
| ~~~~~^~~~~~~~~~~~
main.cpp:8:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
8 | scanf("%d",&T);
| ~~~~~^~~~~~~~~
main.cpp:11:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
11 | scanf("%s%*c%c",S,&c);
| ~~~~~^~~~~~~~~~~~~~~~
ソースコード
#include<bits/stdc++.h>
int count[26];
main(){
char name[4000][17];
int N,T,L[26],point[4000][28],num=0;//point[26]は最後の提出//27は合計
scanf("%d",&N);
for(int i = 0;i < N;i++)scanf("%d",&L[i]);
scanf("%d",&T);
for(int i = 0;i < T;i++){
char S[17],c;
scanf("%s%*c%c",S,&c);
for(int j = 0;j < 4000;j++){
if(!strcmp(name[j],S)){
point[j][c-'A'] = 50*L[c-'A']+500*L[c-'A']/(8+(++count[c-'A'])*2);
point[j][26] = i;
point[j][27] += point[j][c-'A'];
goto skip;
}
}
strcpy(name[num],S);
point[num][c-'A'] = 50*L[c-'A']+500*L[c-'A']/(8+(++count[c-'A'])*2);
point[num][26] = i;
point[num][27] = point[num][c-'A'];
num++;
skip:i += 0;
}
int number[4000],last[4000],sum[4000];
for(int i = 0;i < num;i++){
number[i] = i;
last[i] = point[i][26];
sum[i] = point[i][27];
}
using std::swap;
for(int i = 0;i < num;i++){
for(int j = i+1;j < num;j++){
if(sum[i] < sum[j] ||
(sum[i] == sum[j] && last[i] > last[j])){
swap(sum[i],sum[j]);
swap(last[i],last[j]);
swap(number[i],number[j]);
}
}
}
for(int i = 0;i < num;i++){
printf("%d %s",i+1,name[number[i]]);
for(int j = 0;j < N;j++){
printf(" %d",point[number[i]][j]);
}
printf(" %d\n",point[number[i]][27]);
}
}
Bantako