結果
| 問題 |
No.81 すべて足すだけの簡単なお仕事です。
|
| コンテスト | |
| ユーザー |
Bantako
|
| 提出日時 | 2018-12-28 19:51:46 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 5,000 ms |
| コード長 | 1,481 bytes |
| コンパイル時間 | 2,247 ms |
| コンパイル使用メモリ | 170,932 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-22 16:43:53 |
| 合計ジャッジ時間 | 3,037 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 30 |
コンパイルメッセージ
main.cpp:14:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
14 | main(){
| ^~~~
ソースコード
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=int(a);i<int(b);++i)
using namespace std;
typedef long long ll;
int INF = (1LL << 30) - 1;
ll MOD = 1e10;
int charsearch(string s,char c){
//文字cが文字列sに含まれるかどうか
rep(i, 0, s.length()){
if(s[i] == c)return i;
}
return -1;
}
main(){
int sign = 1;
ll num[2] = {};
int N;
cin >> N;
rep(i,0,N){
string s;
cin >> s;
int ind = charsearch(s,'.');
ll a,b;
if(ind != -1){
//cout << s.substr(0,ind) << endl;
//cout << s.substr(ind+1) << endl;
a = stoll(s.substr(0,ind));
b = stoll(s.substr(ind+1) + string(10 - (s.size() - ind - 1), '0') );
//cout << a << " " << b << endl;
}else{
a = stoll(s);
b = 0;
}
int sign2 = s[0] == '-' ? -1 : 1;
a = abs(a);
if(sign == sign2){
num[1] += b;
num[0] += a + (num[1] / MOD);
num[1] %= MOD;
}else{
if(num[0] < a || num[0] == a && num[1] < b){
swap(num[0], a);
swap(num[1], b);
sign = sign2;
}
num[1] -= b;
if(num[1] < 0){
num[0]--;
num[1] += MOD;
}
num[0] -= a;
}
}
cout << (sign == -1 ? "-" : "");
printf("%lld.%010lld\n", num[0], num[1]);
}
Bantako