제출 #96467

#제출 시각아이디문제언어결과실행 시간메모리
96467rajarshi_basu지구 온난화 (NOI13_gw)C++14
0 / 40
572 ms33792 KiB
#include <iostream> #include <vector> #include <set> #include <iomanip> #include <algorithm> #include <functional> #include <stdio.h> #include <cmath> #include <queue> #include <string> #include <map> #include <complex> #include <stack> #include <set> #define FOR(i,n) for (int i = 0;i<n;i++) #define FORE(i, a, b) for (int i = a;i<= b;i++) #define ll long long int #define ff first #define ss second #define ii pair<int,int> #define pb push_back #define mp make_pair using namespace std; int* arr; int N; vector<ii> all; vector<int> _begs_; vector<int> _ends_; void preProcess(){ FOR(i,N){ if(i==0)continue; if(arr[i] != arr[i-1]){ all.pb(mp(min(arr[i],arr[i-1]),max(arr[i],arr[i-1]) -1)); _begs_.pb(min(arr[i],arr[i-1])); _ends_.pb(max(arr[i],arr[i-1])-1); } } sort(_begs_.begin(), _begs_.end()); sort(_ends_.begin(), _ends_.end()); } // sl == sealevel int query(int sl){ int cnt = 0; //FOR(i,all.size())if(sl >= all[i].ff and sl <= all[i].ss)cnt++; int eliminate = _begs_.end() - lower_bound(_begs_.begin(), _begs_.end() , sl) -1 ; eliminate += lower_bound(_ends_.begin(), _ends_.end() , sl+1) - _ends_.begin() - 1; cnt = all.size() - eliminate; if(arr[0] > sl)cnt++; if(arr[N-1] > sl)cnt++; //if((arr[0] > sl and arr[N-1]>sl)or(arr[0] <= sl and arr[N-1] <= sl))cnt++; return cnt/2; } int gw(int nn,int *H){ N = nn; ii crdcmprs[N]; FOR(i,N)crdcmprs[i].ff = H[i],crdcmprs[i].ss = i; sort(crdcmprs,crdcmprs+N); arr = new int[N]; int PtR = 0; FOR(i,N){ if(i > 0 and crdcmprs[i].ff > crdcmprs[i-1].ff)PtR++; arr[crdcmprs[i].ss] = PtR; } int mx = 0; preProcess(); //FOR(i,N)cout << arr[i] << " ";cout << endl; FOR(i,all.size()){ // cout << all[i].ff << " " << all[i].ss << endl; } FOR(i,min(crdcmprs[N-1].ff+1,N+2)){ int val; mx = max(mx,val = query(i)); //cout << val << endl; } return mx; } int main(){ int n; cin >> n; int h[n]; FOR(i,n)cin >> h[i]; cout << gw(n,h) << endl; return 0; }

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

gw.cpp: In function 'int gw(int, int*)':
gw.cpp:16:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define FOR(i,n) for (int i = 0;i<n;i++)
gw.cpp:77:6:
  FOR(i,all.size()){
      ~~~~~~~~~~~~                 
gw.cpp:77:2: note: in expansion of macro 'FOR'
  FOR(i,all.size()){
  ^~~
#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...