Submission #581587

#TimeUsernameProblemLanguageResultExecution timeMemory
581587DaktoFish (IOI08_fish)C++17
8 / 100
3054 ms36072 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/detail/standard_policies.hpp> using namespace std; using namespace __gnu_pbds; #define DEBUGMODE 1 #ifdef ONLINE_JUDGE #define DEBUGMODE 0 #endif #define cerr if(DEBUGMODE) cerr #define DEBUG(a) if(DEBUGMODE) cout<<(a)<<endl #define REP(i,n) for(int i=0; i<(n); i++) #define REPR(i, begin, end) for (__typeof(end) i = (begin) - ((begin) > (end)); i != (end) - ((begin) > (end)); i += 1 - 2 * ((begin) > (end))) #define EACH(i,c) for(auto (i):c) #define endl '\n' #define ff first #define ss second #define all(x) begin(x), end(x) #define LLM LONG_LONG_MAX #define gcd __gcd #define pb push_back #define MANY_TESTS ll ntests; cin>>ntests; for(ll test=1; test<=ntests; test++) #define contains(a,b) ((a).find(b)!=(a).end()) #define INF 1e16 #define NINF -1e16 #define cinv(n,v) ll n; cin>>n; vl v(n); cin>>v; #define fact(f,n) vl f={0}; for(ll i=0; i<n; i++) f.push_back(f[i]*(i+1)); #define codejamout(s) cout<<"Case #"<<test<<": "<<s<<"\n"; #define LOG(x) cerr<<"Line "<<__LINE__<<":"<<#x<<" = "<<x<<endl; typedef long long ll; typedef long double ld; typedef pair<ll,ll> pll; typedef vector<ll> vl; typedef vector<vl> vvl; typedef vector<pair<ll,ll>> vpll; typedef tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update> ordered_set; const ll MOD=1e9+7; template <class T, class U> ostream& operator<<(ostream& out, const pair<T, U> &par) {out << "(" << par.first << ";" << par.second << ")"; return out;} template <class T> ostream& operator<<(ostream& out, const set<T> &cont) { out << "{"; for( const auto &x:cont) out << x << ", "; out << "}"; return out; } template <class T, class U> ostream& operator<<(ostream& out, const map<T, U> &cont) {out << "{"; for( const auto &x:cont) out << x << ", "; out << "}"; return out; } template<class T> ostream& operator<<(ostream& out, const vector<T> &v){ out << "["; REP(i, v.size()) out << v[i] << ", "; out << "]"; return out;} // istreams template<class T> istream& operator>>(istream& in, vector<T> &v){ for(auto &x : v) in >> x; return in; } template<class T, class U> istream& operator>>(istream& in, pair<T, U> &p){ in >> p.ff >> p.ss; return in; } template<typename T> pair<T, ll> get_min(vector<T> &v){ typename vector<T> :: iterator it = min_element(v.begin(), v.end()); return {*it, it - v.begin()};} template<typename T> pair<T, ll> get_max(vector<T> &v){ typename vector<T> :: iterator it = max_element(v.begin(), v.end()); return {*it, it - v.begin()};} template<class T> bool remin(T& a, const T& b){return (b<a?a=b,1:0);} template<class T> bool remax(T& a, const T& b){return (a<b?a=b,1:0);} int main(){ cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false); ll f,k,m; cin>>f>>k>>m; vpll v(f); REP(i,f){ cin>>v[i].ff>>v[i].ss; } map<ll,ll> cnts; EACH(i, v){ cnts[i.ss]++; } sort(all(v), greater<pll>()); ll p2=0; set<ll> seen; map<ll,ll> dels; long long res=m-1; for(int p1=0; p1<f; p1++){ //cout<<res<<endl; if(v[0].ff>=2*v[p1].ff) break; while(p2<f && v[p2].ff*2>v[p1].ff){ cnts[v[p2].ss]--; dels[v[p2].ss]++; p2++; } if(p2==f) break; if(!contains(seen, v[p1].ss)){ seen.insert(v[p1].ss); ll dlta=1; if(p1!=0 && dels[v[p1].ss]>1) continue; EACH(i, cnts){ if(i.ff != v[p1].ss){ dlta*=i.ss+1; dlta%=m; } } if(p1==0){ dlta*=cnts[v[p1].ss]+2; dlta%=m; } res+=dlta; res%=m; } } cout<<res<<endl; return 0; }

Compilation message (stderr)

fish.cpp: In function 'int main()':
fish.cpp:18:28: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   18 | #define EACH(i,c) for(auto (i):c)
      |                            ^
fish.cpp:85:5: note: in expansion of macro 'EACH'
   85 |     EACH(i, v){
      |     ^~~~
fish.cpp:18:28: warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
   18 | #define EACH(i,c) for(auto (i):c)
      |                            ^
fish.cpp:116:13: note: in expansion of macro 'EACH'
  116 |             EACH(i, cnts){
      |             ^~~~
#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...
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...