Entries

スポンサーサイト (この記事を編集する[管理者用])

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/1843-ccc16b65
この記事にトラックバックする(FC2ブログユーザー)

Beta Round #53 B問題 - Martian Architecture (この記事を編集する[管理者用])

Source

Codeforces Beta Round #53 B問題
Problem description
Beta Round #53の自分の参加記録

問題概要

n個 (100000以下) の箱があって,最初は空.
m回 (100000以下) の操作を行う.
 箱番号aにx個石を入れて,箱番号a+1にx+1個石を入れて,…,箱番号bにx+b-a個石を入れる (xは1000以下)
k個 (100個以下) の箱番号が与えられて,その箱に入っている石の数の合計を求める問題.

解法

k個の箱それぞれに何個石が入っているか愚直に計算すれば良い.
前の箱からの増減を覚えておくことで,うまく全部の箱の石の数を求めることもできるが,そこまでする必要もない.

C言語のスパゲッティなコード
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define REP(i,a,b) for(i=a;i<b;i++)
#define rep(i,n) REP(i,0,n)

int main(){
  int i,j,k,l,m,n,q,in;
  long long res;
  int a[100000], b[100000], c[100000];

  while(scanf("%d%d%d",&n,&m,&q)==3){
    res = 0;
    rep(i,m) scanf("%d%d%d",a+i,b+i,c+i);
    while(q--){
      scanf("%d",&in);
      rep(i,m) if(a[i] <= in && in <= b[i]) res += in-a[i]+c[i];
    }
    printf("%I64d\n",res);
    break;
  }

  return 0;
}

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://rsujskf.blog32.fc2.com/tb.php/1843-ccc16b65
この記事にトラックバックする(FC2ブログユーザー)

Appendix

Recent Articles

ブログ内検索

Ads


(プライバシーポリシー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。