結果

問題 No.222 引き算と足し算
コンテスト
ユーザー nmnmnmnmnmnmnm
提出日時 2015-06-05 22:45:43
言語 C++11
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=gnu++11 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
AC  
実行時間 2 ms / 1,000 ms
コード長 1,888 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 957 ms
コンパイル使用メモリ 110,380 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-05-10 22:16:00
合計ジャッジ時間 2,159 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 31
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function 'int main()':
main.cpp:66:5: warning: 'flag' may be used uninitialized [-Wmaybe-uninitialized]
   66 |     if(flag == 0)ans=-ston(s1)+ston(s2);
      |     ^~
main.cpp:43:7: note: 'flag' was declared here
   43 |   int flag;
      |       ^~~~
main.cpp:58:24: warning: 'index' may be used uninitialized [-Wmaybe-uninitialized]
   58 |   if(s[0]=='-'&&s[index+1]=='-'){
      |                   ~~~~~^~
main.cpp:44:7: note: 'index' was declared here
   44 |   int index;
      |       ^~~~~

ソースコード

diff #
raw source code

#include <algorithm>
#include <cfloat>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <iostream>
#include <map>
#include <memory>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
 
using namespace std;
 
#define sz size()
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(c) (c).begin(), (c).end()
#define rep(i,a,b) for(int i=(a);i<(b);++i)
#define clr(a, b) memset((a), (b) ,sizeof(a))
 
#define MOD 1000000007

long long ston(string s){
  long long n;
  sscanf(s.c_str(), "%lld", &n);
  return n;
}

int main(){
  string s;
  cin>>s;
  int flag;
  int index;
  rep(i,1,s.sz){
    if(s[i]=='+'){
      flag = 0;
      index = i;
      break;
    }
    if(s[i]=='-'){
      flag = 1;
      index = i;
      break;
    }    
  }
  int ans;
  if(s[0]=='-'&&s[index+1]=='-'){
    string s1,s2;
    rep(i,1,index){
      s1+=s[i];
    }
    rep(i,index+2,s.sz){
      s2+=s[i];
    }
    if(flag == 0)ans=-ston(s1)+ston(s2);
    if(flag == 1)ans=-ston(s1)-ston(s2);
  }
  if(s[0]=='-'&&s[index+1]!='-'){
    string s1,s2;
    rep(i,1,index){
      s1+=s[i];
    }
    rep(i,index+1,s.sz){
      s2+=s[i];
    }
    if(flag == 0)ans=-ston(s1)-ston(s2);
    if(flag == 1)ans=-ston(s1)+ston(s2);
  }
  if(s[0]!='-'&&s[index+1]=='-'){
    string s1,s2;
    rep(i,0,index){
      s1+=s[i];
    }
    rep(i,index+2,s.sz){
      s2+=s[i];
    }
    if(flag == 0)ans=ston(s1)+ston(s2);
    if(flag == 1)ans=ston(s1)-ston(s2);
  }
  if(s[0]!='-'&&s[index+1]!='-'){
    string s1,s2;
    rep(i,0,index){
      s1+=s[i];
    }
    rep(i,index+1,s.sz){
      s2+=s[i];
    }
    if(flag == 0)ans=ston(s1)-ston(s2);
    if(flag == 1)ans=ston(s1)+ston(s2);
  }
  cout << ans <<endl;
  return 0;
}
0