제출 #498474

#제출 시각아이디문제언어결과실행 시간메모리
498474YuisuyunoPalembang Bridges (APIO15_bridge)C++14
100 / 100
216 ms14360 KiB
//Nguyen Huu Hoang Minh #include <bits/stdc++.h> #define sz(x) int(x.size()) #define all(x) x.begin(),x.end() #define reset(x) memset(x, 0,sizeof(x)) #define pb push_back #define mp make_pair #define fi first #define se second #define N 100005 #define remain(x) if (x > MOD) x -= MOD #define ii pair<int, int> #define iiii pair< ii , ii > #define viiii vector< iiii > #define vi vector<int> #define vii vector< ii > #define bit(x, i) (((x) >> (i)) & 1) #define Task "test" #define int long long using namespace std; typedef long double ld; const int inf = 1e10; const int minf = -1e10; int n, k; struct ppl{ int s, t; bool operator < (const ppl &a) const{ return s+t < a.s + a.t; } }; vector<ppl> Q; int same_side = 0; int pref[N]; multiset<int> low, high; int sumr, suml; void add(int x){ int med = (low.size() ? *low.rbegin() : 1e15); if (x <= med){ low.insert(x); suml+=x; } else high.insert(x), sumr+=x; if (low.size() > high.size()+1){ int tmp = *low.rbegin(); suml -= tmp; high.insert(tmp); sumr += tmp; low.erase(low.find(tmp)); } else if (low.size() < high.size()){ int tmp = *high.begin(); sumr -= tmp; suml += tmp; low.insert(tmp); high.erase(high.find(tmp)); } } void readfile() { ios_base::sync_with_stdio(false); cin.tie(0);cout.tie(0); if (fopen(Task".inp","r")) { freopen(Task".inp","r",stdin); //freopen(Task".out","w",stdout); } cin >> k >> n; for(int i=1; i<=n; i++){ char a, b; int x, y; cin >> a >> x >> b >> y; if (a==b) same_side += abs(x-y); else{ Q.pb({x,y}); } } sort(all(Q)); } void proc() { n = Q.size(); same_side += n; for(int i=0; i<Q.size(); i++){ add(Q[i].s); add(Q[i].t); pref[i] = sumr - suml; } int ans = pref[n-1]; if (k==2){ suml = 0; sumr = 0; low.clear(); high.clear(); for(int i=n-1; i>=0; i--){ add(Q[i].s); add(Q[i].t); ans = min(ans,sumr - suml + pref[i-1]); } } cout << same_side + ans; } signed main() { readfile(); proc(); return 0; }

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

bridge.cpp: In function 'void proc()':
bridge.cpp:88:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<ppl>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   88 |     for(int i=0; i<Q.size(); i++){
      |                  ~^~~~~~~~~
bridge.cpp: In function 'void readfile()':
bridge.cpp:68:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   68 |         freopen(Task".inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
#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...