Submission #925589

#TimeUsernameProblemLanguageResultExecution timeMemory
925589vjudge1Collecting Mushrooms (NOI18_collectmushrooms)C++17
46 / 100
277 ms22760 KiB
/* no more temmy :( */ #include<bits/stdc++.h> using namespace std; #pragma GCC optimize("O3,unroll-loops") #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; // #include<icecream.hpp> // using namespace icecream; #define ll long long #define int ll #define ld long double #define y1 cheza // mt19937 rng(1983413); mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); template<class T> using ordered_set = tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>; const int N=5e5+100; const int M=1e6; const int B=317; const int mod=998244353; const int INF=1e18; const int lg=64; const int dx[]={1,-1,0,0}; const int dy[]={0,0,1,-1}; const double eps=1e-9; int n,m,d,k; int dist(pair<int,int>x,pair<int,int>y){ return max(abs(x.first-y.first),abs(x.second-y.second)); } int pref[N]; vector<ordered_set<int>>t; void upd(int v,int tl,int tr,int x,int y){ if(tl==tr){ t[v].insert(y); return; } int mid=(tl+tr)>>1ll; if(x<=mid){ upd(v*2,tl,mid,x,y); } else{ upd(v*2+1,mid+1,tr,x,y); } t[v].insert(y); } int get(int v,int tl,int tr,int lx,int rx,int ly,int ry){ if(v==1){ // cout<<lx<<' '<<rx<<' '<<ly<<' '<<ry<<'\n'; } if(tl>rx||tr<lx||t[v].size()==0)return 0; if(lx<=tl&&tr<=rx){ int res=(int)t[v].order_of_key(ry+1)-(int)t[v].order_of_key(ly); return res; } int mid=(tl+tr)>>1ll; return get(v*2,tl,mid,lx,rx,ly,ry)+get(v*2+1,mid+1,tr,lx,rx,ly,ry); } void test(){ cin>>n>>m>>d>>k; t.resize(n*4); vector<pair<int,int>>a,b; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ char x; cin>>x; if(x=='M'){ a.push_back({i,j}); } if(x=='S'){ b.push_back({i,j}); } } } if(b.size()<k){ cout<<0<<'\n'; return; } int ans=0; for(auto [x,y]:b){ upd(1,1,n,x,y); // cout<<x<<' '<<y<<'\n'; } for(auto [x,y]:a){ int res=get(1,1,n,max(x-d,1ll),min(x+d,n),max(y-d,1ll),min(y+d,m)); if(res>=k){ ans++; } } cout<<ans<<'\n'; } /* */ signed main(){ // ic.prefix("debug->| "); // freopen("input.txt","r",stdin); // freopen("output.txt","w",stdout); ios_base::sync_with_stdio(false); cin.tie(nullptr); // cout.tie(nullptr); long long t2=1; // cin>>t2; for(int i=1;i<=t2;i++){ test(); } return 0; }

Compilation message (stderr)

mushrooms.cpp: In function 'void test()':
mushrooms.cpp:78:16: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   78 |     if(b.size()<k){
      |        ~~~~~~~~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...