結果

問題 No.265 数学のテスト
ユーザー nasadigital
提出日時 2015-08-07 23:27:46
言語 C++11(廃止可能性あり)
(gcc 13.3.0)
結果
WA  
実行時間 -
コード長 1,462 bytes
コンパイル時間 402 ms
コンパイル使用メモリ 57,452 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-07-18 05:24:17
合計ジャッジ時間 1,297 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 31 WA * 1
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>

using namespace std;

int N,D;
string s;
int ctr;


/*


*/

class shiki{
public:
int n;
int * cs;
shiki(int n){
    this->n=n;
    cs=new int[n];
    for(int ctr1=0;ctr1<n;ctr1++)
    cs[ctr1]=0;
}

void raise(int s,int c){
    cs[s]+=c;
}

void add(shiki b){
    for(int ctr1=0;ctr1<n;ctr1++)
    cs[ctr1]+=b.cs[ctr1];
}

void free(){
    delete [] cs;
}

void p(){
    for(int ctr1=0;ctr1<n;ctr1++){
        cout<<cs[ctr1]<<" ";
    }
    cout<<endl;
}

void dx(){
    int * cs2=new int[n];
    for(int ctr1=0;ctr1<n-1;ctr1++){
        cs2[ctr1]=cs[ctr1+1]*(ctr1+1);
    }
    cs2[n-1]=0;
    delete [] cs;
    cs=cs2;
}

};
shiki parse(){
    shiki rez(D);
    while(1)
    if(ctr==N)
    return rez;
    else if(s[ctr]=='d'){
        ctr+=2;
        shiki k=parse();
        k.dx();
        rez.add(k);
        k.free();
    }else if(s[ctr]=='}'){
        ctr++;
        return rez;
    }else if (s[ctr]=='+'){
        ctr++;
    }else{
        int step=0,kons=1;
        int l=N;
        for(int ctr1=ctr;ctr1<N;ctr1++)
            if(s[ctr1]!='x' && s[ctr1]!='*' && !isdigit(s[ctr1])){
            l=ctr1;break;}
        for(int ctr1=ctr;ctr1<l;ctr1++){
            if(isdigit(s[ctr1]))
            kons=s[ctr1]-'0';
            if(s[ctr1]=='x')
            step++;
        }
        ctr=l;
        rez.raise(step,kons);
    }
}


int main()
{
    ctr=0;
    cin>>N>>D>>s;
    D++;
    shiki rez=parse();
    rez.p();
    return 0;
}
0