結果
問題 |
No.60 魔法少女
|
ユーザー |
|
提出日時 | 2016-08-26 09:51:41 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2,987 ms / 5,000 ms |
コード長 | 1,089 bytes |
コンパイル時間 | 2,019 ms |
コンパイル使用メモリ | 65,376 KB |
実行使用メモリ | 8,400 KB |
最終ジャッジ日時 | 2024-11-08 03:19:15 |
合計ジャッジ時間 | 18,605 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 10 |
ソースコード
#include <iostream> #include <vector> #include <tuple> using namespace std; int aa[1001][1001]; int main(){ int n,k,x,y,hp,ax,ay,w,h,d; cin>>n>>k; vector<tuple<int,int,int>> v; int eax=0; int eix=1000; int eay=0; int eiy=1000; for(int i=0; i<n; ++i){ cin>>x>>y>>hp; int a=x+500; int b=y+500; if(a>eax) eax=a; if(a<eix) eix=a; if(b>eay) eay=b; if(b<eiy) eiy=b; tuple<int,int,int> t=make_tuple(a,b,hp); v.push_back(t); } for(int i=0; i<k; ++i){ cin>>ax>>ay>>w>>h>>d; int sx,ex,sy,ey; sx=ax+500; ex=ax+500+w; if(ex>1000) ex=1000; sy=ay+500; ey=ay+500+h; if(ey>1000) ey=1000; if(sx<eix) sx=eix; if(ex>eax) ex=eax; if(sy<eiy) sy=eiy; if(ey>eax) ey=eax; for(int j=sx; j<=ex; ++j){ for(int k=sy; k<=ey; ++k){ aa[j][k]+=d; } } } int z=0; for(int i=0; i<v.size(); ++i){ tuple<int,int,int> t=v[i]; int& tx=get<0>(t); int& ty=get<1>(t); int& thp=get<2>(t); thp-=aa[tx][ty]; if(thp<0) thp=0; z+=thp; } cout<<z<<endl; return 0; }