제출 #776576

#제출 시각아이디문제언어결과실행 시간메모리
776576salmonFish (IOI08_fish)C++14
49 / 100
3069 ms12364 KiB
#include <bits/stdc++.h> using namespace std; int N,M; int mod; int l,h; vector<pair<int,int>> v; int main(){ scanf(" %d",&N); scanf(" %d",&M); scanf(" %d",&mod); int mep[500100]; int mepu[500100]; bool usable[M + 1]; for(int i = 1; i <= M; i++){ mep[i] = -1; mepu[i] = -1; } for(int i = 0; i <= M; i++) usable[i] = false; for(int i = 0; i < N; i++){ scanf(" %d",&l); scanf(" %d",&h); v.push_back(make_pair(l,h)); } sort(v.begin(),v.end(),greater<pair<int,int>>()); bool o[500100]; set<int> smol; vector<pair<int,int>> oh; for(int i = 0; i <= M; i++){ o[i] = true; } for(int i = 0; i < v.size(); i++){ if(o[v[i].second]){ oh.push_back(v[i]); o[v[i].second] = false; } } int it = 0; reverse(v.begin(),v.end()); int bigans = 0; vector<pair<int,int>> tempuse; for(int i = 0; i < N; i++){ while(it != N && v[i].first >= v[it].first * 2){ if(usable[v[it].second]){ if(mep[v[it].second] == -1){ mep[v[it].second] = 1; } else{ mep[v[it].second]++; } it++; } else{ if(mepu[v[it].second] == -1){ mepu[v[it].second] = 1; } else{ mepu[v[it].second]++; } it++; } } if(v[i] == oh.back()){ if(mepu[oh.back().second] != -1){ mep[oh.back().second] = mepu[oh.back().second]; } usable[oh.back().second] = true; long long int ans = 1; for(int i = 1; i <= M; i++){ if(mep[i] != -1){ ans = ans * (mep[i] + 1) % mod; } } bigans += ans; bigans %= mod; oh.pop_back(); long long int sub = 1; ans = 1; for(int j = 0; j < oh.size(); j++){ if(oh[j].first < v[i].first * 2){ bool flag = false; for(int k = it; k < i; k++){ if(oh[j].first >= v[k].first * 2 && v[k].second == v[i].second) flag = true; } if(flag) continue; if(mepu[oh[j].second] != -1){ ans *= (1 + mepu[oh[j].second]); ans %= mod; } } } ans %= mod; sub %= mod; for(int j = 1; j <= M; j++){ if(mep[j] != -1 && j != v[i].second){ ans = ans * (mep[j] + 1) % mod; sub = sub * (mep[j] + 1) % mod; } } ans -= sub; ans =(ans + mod) % mod; bigans += ans; bigans %= mod; //printf("%d %d %d %d\n",v[i].first,bigans,ans,sub); } } printf("%d",bigans); } /* * 5 3 700 8 3 7 2 4 1 2 3 2 2 * */

컴파일 시 표준 에러 (stderr) 메시지

fish.cpp: In function 'int main()':
fish.cpp:42:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |  for(int i = 0; i < v.size(); i++){
      |                 ~~^~~~~~~~~~
fish.cpp:105:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  105 |    for(int j = 0; j < oh.size(); j++){
      |                   ~~^~~~~~~~~~~
fish.cpp:9:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
    9 |  scanf(" %d",&N);
      |  ~~~~~^~~~~~~~~~
fish.cpp:10:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |  scanf(" %d",&M);
      |  ~~~~~^~~~~~~~~~
fish.cpp:12:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |  scanf(" %d",&mod);
      |  ~~~~~^~~~~~~~~~~~
fish.cpp:26:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |   scanf(" %d",&l);
      |   ~~~~~^~~~~~~~~~
fish.cpp:27:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |   scanf(" %d",&h);
      |   ~~~~~^~~~~~~~~~
#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...