結果

問題 No.33 アメーバがたくさん
ユーザー 184184
提出日時 2014-10-03 19:30:19
言語 C++11
(gcc 11.4.0)
結果
RE  
実行時間 -
コード長 1,600 bytes
コンパイル時間 792 ms
コンパイル使用メモリ 84,476 KB
実行使用メモリ 6,948 KB
最終ジャッジ日時 2024-09-24 09:54:51
合計ジャッジ時間 2,600 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 RE -
testcase_02 RE -
testcase_03 RE -
testcase_04 RE -
testcase_05 RE -
testcase_06 RE -
testcase_07 RE -
testcase_08 RE -
testcase_09 RE -
testcase_10 RE -
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function ‘int solve()’:
main.cpp:52:1: warning: no return statement in function returning non-void [-Wreturn-type]
   52 | }
      | ^
main.cpp:19:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   19 |         scanf("%lld%lld%lld",&n,&d,&t);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
main.cpp:24:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   24 |                 scanf("%lld",&x[i]);
      |                 ~~~~~^~~~~~~~~~~~~~

ソースコード

diff #

#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <map>
#include <vector>
#include <queue>

using namespace std;

/*
正解してたら匿名でも問題投稿ができる(実現度さらにアップ)!!!

答えが合わない、テストケースが知りたい・・・・・
 
*/ 
long long n,d,t,x[101];
int solve(){
	scanf("%lld%lld%lld",&n,&d,&t);
	map<long long,long long> mp;
	vector<long long> ps;
	for(int i=0;i<n;i++){
		//long long x;
		scanf("%lld",&x[i]);
		ps.push_back(x[i]);
	}
	sort(ps.begin(),ps.end());
	
	long long diff[101];
	long long inc=1+t+t;
	mp[0]=t*d;
	long long ans=1+t+t;
	for(int i=1;i<n;i++){
		diff[i]=ps[i]-ps[0];
		if(mp[diff[i]%d]==0){ 
			mp[diff[i]%d]=diff[i]+t*d;
			ans+=inc;
		}
		else{
			if(mp[diff[i]%d]>=diff[i]-t*d){ 
				ans+=inc-((mp[diff[i]%d]-(diff[i]-t*d))/d+1);
				mp[diff[i]%d]=diff[i]+t*d;
			}
			else ans+=inc;
		}
		
	} 
	printf("%lld\n",ans);
	
	
	
}
int main(){
	solve();
	//return 0;
	
//	long long n,d,t;scanf("%lld%lld%lld",&n,&d,&t);
	
	map<long long,int> mp;
	for(int i=0;i<n;i++){
//		long long x;
//		scanf("%lld",&x);
		mp[x[i]]++;
	}
	long long next,prev;
	map<long long,int>::iterator it;
	map<long long,int> nmp;
	while(t--){
		for(it=mp.begin();it!=mp.end();it++){
			next=it->first+d;
			prev=it->first-d;
			nmp[next]++;
			nmp[prev]++;
			nmp[it->first]++;
		} 
		mp=nmp;
	}
	long long ans=0;
	for(it=mp.begin();it!=mp.end();it++){
		if(it->second)ans++;
	}
	printf("%lld\n",ans);
	
	return 0;
} 
0